RoR pass params to modal
Я пытаюсь открыть модальный, который отображает список элементов. Список элементов уже доступен в представлении в виде переменной. Как передать эту переменную в модальную?
ниже примерно так выглядит основной вид:
вид.формат html.Эрб
<div>
<%= @users.each do |user|%>
<h1>user.name</h1>
<h2>user.email</h2>
<%= link_to remote: true, 'data-toggle' => 'modal', 'data-target' => '#taskModal do %>
<i><%= user.tasks.count%></i>
<% end %>
<% end %>
</div>
<div class="modal" id="taskModal" aria-hidden="true">
...
<%= render partial: 'list_modal' %>
list_modal
является частичным со структурой модального.
3 ответов
в отличие от того, что список элементов уже находится в представлении и хочет передать его модальному, одно, что вы можете сделать, это сделать кнопку ( или ссылку ) для открытия модального, чтобы вызвать действие контроллера ajax, а затем позволить действию ответить на JS, где вы теперь будете использовать соответствующее представление.JS-файл как для заполнения модального, так и для программного его отображения ( после заполнения).
пример:
Ссылка для открытия модал:
<%= link_to "Open users list", users_open_list_modal_path, remote: true %>
пользователи открыть список модальных действий контроллера:
def open_list_modal
@user_list = User.all
respond_to do |format|
format.js
end
end
open_list_modal.js.Эрб:
#populate modal
$('#modal').html('#{ escape_javascript(<%= render partial: 'user_list', locals: {user_list: @user_list} )}');
#render modal
$('#modal').openModal();
и затем на самом модальном, теперь вы можете иметь доступ к user_list
(не @user_list
) список.
Примечание: в этом примере я использовал оба
erb
,js
иmaterial-modal
. Если вы используете что-то отличное от них ( возможно,slim
,haml
,coffee
,bootstrap
...), вам придется установить пример для вашего случая.
надеюсь, что это помогает.
вы можете просто напрямую передать его в modal. вот что я сделал ты, на мой взгляд, у меня есть кнопка, которая запускает мой модальный, а затем я создал частичный (чтобы высушить мой код) _modal.html.erb
и назвал это частичным после моей кнопки.
<button type="button" class="btn btn-default" data-toggle="modal" data-target="#modal"></button
<%= render 'modal' %>
убедитесь, что ваш модальный имеет id <div class="modal fade" id="modal" tabindex="-1" role="dialog">...
гл приятель!
вы можете установить его как обычно для компонентов просмотра. Еще лучше, отделите свою модель на частичную, скажем, это _modal.html.erb
. Тогда вы можете вызвать модальный по
<%= render 'partial_name', :variable_name => your_current_variable %>
переменная теперь будет доступна как variable_name
внутри частичная. Кроме того, если это переменная экземпляра, например @your_current_variable
тогда он будет автоматически доступен в вашем частичном.