控制器没有接收到对象ID

时间:2014-05-01 09:34:13

标签: ruby-on-rails ruby-on-rails-4

我正在尝试使用

将category.id传递给商店/索引控制器
<% Category.all.each do |category| %>
        <div><%= link_to category.name.titleize, shop_index_path :category_id => category.id  %></div>
        <hr>
    <% end %>

控制器:

class ShopController < ApplicationController    
    def index
        @products = Category.find(params[:category_id]).products
    end    
end

哪个类别有很多产品。但每当我点击链接时我都会

Couldn't find Category without an ID

谁能明白这是为什么?

编辑:这是我使用的路线

get 'shop/index'

3 个答案:

答案 0 :(得分:4)

尝试添加params

shop_index_path(params: { category_id: category.id })

您需要优化路线以传递params

get 'shop/index/:category_id', to: 'shop#index'

现在你可以将category_id传递给路径助手,如:

shop_index_path(category.id)

答案 1 :(得分:0)

应该是

<%= link_to category.name.titleize, shop_index_path(category.id) %>

答案 2 :(得分:0)

当然你可以使用:

shop_index_path(category.id)

然后加载:

Category.find(params[:id]).products