代码之家  ›  专栏  ›  技术社区  ›  Kombo

Rails 3-嵌套资源的索引视图

  •  4
  • Kombo  · 技术社区  · 14 年前

    我有一个多对多的关系,两个模型,订单和产品。有一个名为“行”的联接表,用户可以向想要订购的产品添加数量。

    我的产品嵌套在订单中,因此我的路线如下:

      resources :orders do
        resources :products, :controller => "products"    
      end
    end
    

    如果index.html.erb只是一个占位符,那么我可以成功地转到索引(orders/id/products),但是当尝试显示数据时,我遇到了问题。

    我的产品表出错(在<%@产品上。每个…行)如下所示:

    <table>
      <tr>
        <th>URL</th>
        <th></th>
        <th></th>
        <th></th>
      </tr>
    
    <% @products.each do |product| %>
      <tr>
        <td><%= product.url %></td>
        <td><%= link_to 'Show', product %></td>
        <td><%= link_to 'Edit', edit_order_products_path(product) %></td>
        <td><%= link_to 'Destroy', order, :confirm => 'Are you sure?', :method => :delete %></td>
      </tr>
    <% end %>
    

    我的索引方法如下:

      def index
        @order = Order.find(params[:order_id])
        @products = Product.all    
    
    
        respond_to do |format|
          format.html # index.html.erb
          format.xml  { render :xml => @products }
        end
      end
    

    错误是声明my@products对象为零;但是,在控制台product.all中返回4项。

    我是个新手,这是我第一次引用嵌套资源,有没有可能我只是使用实例变量@products错误地调用它?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  3
  •   tjeden    14 年前

    @products.present?

    <% if @products.present? %>
      <% @products.each do |product| %>
       <tr>
        <td><%= product.url %></td>
        <td><%= link_to 'Show', product %></td>
        <td><%= link_to 'Edit', edit_order_products_path(product) %></td>
        <td><%= link_to 'Destroy', order, :confirm => 'Are you sure?', :method => :delete %></td>
       </tr>
     <% end %>
    <% else %>
     <tr>
       <td colspan=4>You don't have any products yet.</td>
     </tr>
    <% end %>
    

    @products = @order.products
    

    @products = Product.all