具有嵌套路线的部分形式

时间:2010-03-11 03:14:10

标签: ruby-on-rails routing

我有两个模型 - UserEntry - 通过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

而不是

  

/用户/条目

我错过了什么吗?

我应该注意,在创建和编辑时,正确的类应用于表单,所以它似乎正确地解释了我正在尝试做什么 - 这只是我无法将表单提交给无效的网址。

2 个答案:

答案 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)。