我是Rails的新手,我似乎也遇到过类似的问题,但我不能解决我的问题。
我的路线:
resources :users do
resources :items
end
我的模特:
class Item < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :items
end
于飞:
<% @items.each do |item| %>
<tr>
<td><%= item.id %></td>
<td><%= item.code %></td>
<td><%= item.name %></td>
<td><%= item.quantity %></td>
<td><%= link_to "Edit", edit_user_item_path(item) %></td> <---- error
我得到同样的错误:
No route matches {:action=>"edit", :controller=>"items",
:user_id=>#<Item id: 1, user_id: 1, code: "123", name: "test",
quantity: 12, , created_at: "2014-02-11 15:45:30", updated_at:
"2014-02-11 15:45:30">, :id=>nil, :format=>nil} missing required keys: [:id]
5条答案
按热度按时间gdx19jrr1#
您还需要包括用户,因为它是一个嵌套的路由。
ycggw6v22#
问题在于您使用的是嵌套资源:
所以当你有一个链接:
它将缺少一个
user_id
,因此使用rake routes
可以轻松检查问题。它将列出如下路由:你可以看到上面的路线,并检查它的链接,你会发现它没有
user_id
。这是主要原因!628mspwn3#
您在以下路径中遗漏了
user_id
:运行
bundle exec rake routes | grep edit_user_item
就能找到的格式btqmn9zl4#
传递的是对象
item
,而不是所需的id。4urapxun5#
〈%=链接到“编辑”,编辑用户项目路径(@用户,项目)%〉
并且在项目表单〈%= form_for([@user,@item])中执行|关闭|第1000章:我的天啊