我有两个模型Package
和Item
,它们的关系在REDIS集中定义,所以没有rails关系。我在Item
中设置PackagesController
的实例时遇到问题。
在packages/show
<ul>
<% @items.each do |item| %>
<li><a href="#" data-reveal-id="itemModal"><%= link_to item.item_name %></a></li>
</ul>
<% end %>
<div id="itemModal" class="reveal-modal full" style="overflow: auto;" data-reveal aria-labelledby="modalTitle" aria-hidden="true" role="dialog">
<%= render 'items/item' %>
<a class="close-reveal-modal" aria-label="Close">×</a>
</div>
在_item
部分
<div>
<h2><%= @item.item_name %></h2>
</div>
在PackagesController
class PackagesController < ApplicationController
def show
@package = Package.find(params[:id])
@items = @package.items (items is the REDIS set showing items that belong to the package)
@item = Item.find(params[:id])
end
end
问题在于@item = Item.find(params[:id])
。它使用package.id
来查找项目。例如,如果页面位于Package.id == 6
,则会在呈现的部分中显示Item.id == 6
,而不是点击的正确项目。
如何在不同型号的控制器上正确设置@item
的值?