在渲染部分

时间:2015-04-22 22:59:06

标签: ruby-on-rails

我有两个模型PackageItem,它们的关系在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">&#215;</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的值?

0 个答案:

没有答案