#ruby-on-rails #ruby #twitter-bootstrap #modal-dialog
#ruby-on-rails #ruby #twitter-bootstrap #модальный диалог
Вопрос:
Используя twitter bootstrap для нашего приложения rails 4, я хочу создать вспомогательную функцию для добавления ссылки на страницу, при нажатии на которую будет создано модальное всплывающее окно, отображающее шаблон показа. Я думаю, что я близок, хотя, когда страница, с которой вызывается эта функция, загружается, кнопка отображается правильно, но при нажатии она выдает модальный код с необработанной инъекцией ruby, например:
<%= render :template => 'imprintables/show', locals: { modal: true, id: 1 } %>
Моя проблема в том, что вместо отображения инъекции я бы хотел, чтобы инъекция ruby была предварительно сформирована. Также были бы весьма признательны общие советы по стилю и другие указания / критика. Спасибо!
application_helper.rb:
module ApplicationHelper
def imprintable_modal(imprintable) raw %(
<div class="col-lg-3 text-right">
<a href="#" class="btn btn-primary" data-toggle="modal" data-target="#basicModal">Click for Imprintable Info</a>
</div>
<div class="modal fade" id="basicModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<%= render :template => 'imprintables/show', locals: { modal: true, id: #{imprintable.id} } %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div> )
end
end
Ответ №1:
Если я правильно понял, и содержимое шаблона ‘imprintables / show’ не нужно загружать динамически (через ajax), тогда я предлагаю использовать простые старые шаблоны.
app/views/application/_modal.html.erb:
<div class="col-lg-3 text-right">
<a href="#" class="btn btn-primary" data-toggle="modal" data-target="#basicModal">Click for Imprintable Info</a>
</div>
<div class="modal fade" id="basicModal" tabindex="-1" role="dialog" aria-labelledby="basicModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<%= render :template => 'imprintables/show', locals: { modal: true, id: #{imprintable.id} } %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
и в application_helper.rb:
module ApplicationHelper
def imprintable_modal(imprintable)
render :partial => 'modal', :locals => { :imprintable => imprintable }
end
end
Комментарии:
1. Я как раз собирался опубликовать, что я понял это, но вы меня опередили! Я думаю, что я просто застрял, думая одним способом, когда этот ответ настолько болезненно очевиден. Спасибо за ответ!