Ruby on rails 呈现局部时,在Object.find(params[:id])中使用错误id的Rails
我有两个模型Ruby on rails 呈现局部时,在Object.find(params[:id])中使用错误id的Rails,ruby-on-rails,Ruby On Rails,我有两个模型Package和Item,它们的关系在REDIS集合中定义,因此没有rails关系。在PackagesController中设置项的实例时遇到问题 在packages/show中 <ul> <% @items.each do |item| %> <li><a href="#" data-reveal-id="itemModal"><%= link_to item.item_name %></
Package
和Item
,它们的关系在REDIS集合中定义,因此没有rails关系。在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>
在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
class PackagesController
问题在于@item=item.find(params[:id])
。它正在使用package.id
查找项目。例如,如果页面位于Package.id==6
,则它将在呈现的部分中显示Item.id==6
,而不是单击的正确项
当@item
位于不同型号的控制器上时,如何正确设置其值?您希望它使用哪个id
项目params[:id]
是一个包id
,大概是因为您的路线类似于/packages/:id
;您希望项目id
来自何处?我希望id来自项目列表中生成的特定项目。单击列表中的项目后,我希望显示正确的模式。项目列表来自REDIS集合,因此我不能使用类似于“@package.item”的内容。
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