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。但如果您这样做了,就不必在表单_中同时为(用户和条目)写入这两个对象。