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 тогда он будет автоматически доступен в вашем частичном.