嵌套资源的控制器路径 - 未定义方法`<controller> _path'

owi*_*900 30 ruby-on-rails-3

我在/ users/2/friends/new上显示我的表单时遇到问题.我收到了

undefined method `friends_path' for #<#<Class:0x21f0c14>:0x21ef364>
Run Code Online (Sandbox Code Playgroud)

这是表单的开头

<% form_for(@friend) do |f| %> 
Run Code Online (Sandbox Code Playgroud)

和朋友们一起控制

def new
     @user = User.find(params[:user_id])
     @friend = @user.friends.build
end
Run Code Online (Sandbox Code Playgroud)

这是路线

resources :users do
       resources :friends
end
Run Code Online (Sandbox Code Playgroud)

以及"耙路"的相关路径

users/:user_id/friends/new(.:format)      {:controller=>"friends", :action=>"new"}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助或见解.这是我的第一个rails 3应用程序.

cle*_*nsp 47

尝试:

user_friends_path(@user)
Run Code Online (Sandbox Code Playgroud)

这是因为它是一个嵌套资源:http: //guides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects

更新: 对于表单,您可以执行以下操作:

<%= form_for [@user, @friend] do |f| %>
Run Code Online (Sandbox Code Playgroud)

  • 啊,我明白你要做什么了.你必须做form_for [@user,@ friend] (2认同)