我有两个模型 - User
和Entry
- 通过has_many
关系相关联(用户有很多条目)。我正在使用RESTful路由,并在我的routes.rb文件中包含以下内容:
map.resource :user, :controller => "users" do |user|
user.resources :entries
end
这似乎有效,但在我的部分_form文件中,当我这样做时:
form_for [@current_user, @entry] do |f|
# Form stuff
end
它会生成如下网址:
/user/entries.%23%3Cuser:0xb6a6aea8%3E
而不是
/用户/条目
我错过了什么吗?
我应该注意,在创建和编辑时,正确的类应用于表单,所以它似乎正确地解释了我正在尝试做什么 - 这只是我无法将表单提交给无效的网址。
答案 0 :(得分:0)
您似乎无法从资源(单数)嵌套资源。 尝试制作
map.resources :users do |user|
user.resources :entries
end
此外,最好为用户使用资源。
答案 1 :(得分:0)
我明白了。而不是做:
form_for [@current_user, @entry] do |f|
# Form stuff
end
我需要这样做:
form_for [:user, @entry] do |f|
# Form stuff
end
也就是说,我不得不告诉@current_user
我的form_for
对象的范围是什么(在这种情况下,@entry
,而不是使用user
对象本身。 } class)。