如何在RoR中的link_to之后传递部分current_item id

时间:2018-01-15 12:43:08

标签: ruby-on-rails

我正在尝试制作一个前端,如果单击按钮“租用”,它将呈现一个Modal的引导程序,我需要在其中{{1为了租这个项目。我目前正在获取最新项目,而不是current_item

_itemviewer.html.erb

current_item
_rent_modal.html.erb

中的

  <% @items.each_with_index do |item, j| %>
     <% if item.user != current_user %>
     <%= link_to 'Rent', '#rentModal', class: 'btn btn-success', "data-toggle" => "modal", "data-target" => "#rentModal"%>
     <%= render partial: "layouts/rent_modal", locals: {current_item: item } %>
     <% end %>
  <% end %>

1 个答案:

答案 0 :(得分:1)

问题在于您创建了许多具有相同ID的模式的链接。

 <% @items.each_with_index do |item, j| %>
     <% if item.user != current_user %>
     <%= link_to 'Rent', '#rentModal', class: 'btn btn-success', "data-toggle" => "modal", "data-target" => "#rentModal"%>
     <%= render partial: "layouts/rent_modal", locals: {current_item: item } %>
     <% end %>
  <% end %>

就是这样,对于每个项目,你创建了一个新的链接到你的模态,标识为#rentModal,最后一个模态是最新项目之一;这可能是被渲染的原因。

因此您可能需要为每个项目创建不同的模态和链接ID。 像下面的代码。

 <% @items.each_with_index do |item, j| %>
     <% if item.user != current_user %>
     <%= link_to 'Rent', "#rentModal_#{j}", class: 'btn btn-success', "data-toggle" => "modal", "data-target" => "#rentModal_#{j}"%>
     <%= render partial: "layouts/rent_modal", locals: {current_item: item, index: j } %>
     <% end %>
  <% end %>

在这里您可以看到我们使用j来定义模态ID,您还需要在模态html部分中使用该ID,因此在_rent_modal.html.erb中您需要使用相同的ID每个项目,这就是为什么我们将index作为局部传递给那个局部的。你还需要将代码包含在具有模态id的div中的_rent_modal.html.erb内。您可以看到如何定义模态here