Ruby on rails 带嵌套路由的部分形式
我有两个模型--Ruby on rails 带嵌套路由的部分形式,ruby-on-rails,routing,Ruby On Rails,Routing,我有两个模型--用户和条目--它们通过具有多个关系(一个用户有多个条目)进行关联。我正在使用RESTful路由,在routes.rb文件中有以下内容: map.resource :user, :controller => "users" do |user| user.resources :entries end 这似乎可行,但在我的部分表单文件中,当我这样做时: form_for [@current_user, @entry] do |f| # Form stuff end 它
用户
和条目
--它们通过具有多个
关系(一个用户有多个条目)进行关联。我正在使用RESTful路由,在routes.rb文件中有以下内容:
map.resource :user, :controller => "users" do |user|
user.resources :entries
end
这似乎可行,但在我的部分表单文件中,当我这样做时:
form_for [@current_user, @entry] do |f|
# Form stuff
end
它会生成如下URL:
/用户/条目。%23%3用户:0xb6a6aea8%3E
而不是
/用户/条目
我错过什么了吗
我应该注意,在创建和编辑表单时,表单应用了正确的类,因此它似乎正确地解释了我要做的事情——只是我不能将表单提交到无效的url。似乎无法从资源(单数)嵌套资源。 设法使
map.resources :users do |user|
user.resources :entries
end
此外,更好地为用户使用资源。我明白了。而不是做:
form_for [@current_user, @entry] do |f|
# Form stuff
end
我需要做的是:
form_for [:user, @entry] do |f|
# Form stuff
end
也就是说,我不需要使用
@current\u user
对象本身,而只需要告诉form\u for
我的@entry
对象的范围(在本例中是user
类)。我不确定这是否更好。当用户查看他们的条目时,我不希望用户ID成为URL的一部分(这是不必要的,并且会引起篡改)。也就是说,我更喜欢使用/user/entries而不是/user/1/entries。但如果您这样做了,就不必在表单_中同时为(用户和条目)写入这两个对象。