ROR将params传递给模态

时间:2016-01-20 03:20:30

标签: ruby-on-rails parameters bootstrap-modal

我正在尝试打开一个显示项目列表的模态。项目列表已在视图中作为变量提供。如何将此变量传递给模态?

以下是主视图的大致情况:

View.html.erb

<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 个答案:

答案 0 :(得分:10)

与视图中已有项目列表并希望将其传递给模态相反,您可以做的一件事就是使用按钮(或链接)打开模态以通过ajax调用控制器操作,然后让动作响应JS,你现在将使用相应的view.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.erb:

#populate modal
$('#modal').html('#{ escape_javascript(<%= render partial: 'user_list', locals: {user_list: @user_list} )}');

#render modal
$('#modal').openModal();

然后在模态本身上,您现在可以访问user_list(非@user_list)列表。

  

注意:在此示例中,我使用了erbjsmaterial-modal。如果您使用的不同内容(可能是slimhamlcoffeebootstrap ...),则必须将示例与您的案例进行对比。< / p>

希望这有帮助。

答案 1 :(得分:1)

你可以直接将它传递给模态。在这里我做了什么,在我看来我有一个触发我的模态的按钮,然后我创建了一个部分(干掉我的代码)_modal.html.erb并在我的按钮后调用了部分。

<button type="button" class="btn btn-default" data-toggle="modal" data-target="#modal"></button

<%= render 'modal' %>

确保您的模态标识为<div class="modal fade" id="modal" tabindex="-1" role="dialog">...

gl mate!

答案 2 :(得分:-1)

您可以将其设置为您通常对视图组件执行的操作。更好的是,将你的模型分成部分,比如它_modal.html.erb。然后你可以通过

调用模态
<%= render 'partial_name', :variable_name => your_current_variable %>

变量现在可以在部分内部以variable_name的形式使用。此外,如果它是@your_current_variable之类的实例变量,那么它将在您的部分变量中自动显示。