【问题标题】:Controller path for nested resource - undefined method `<controller>_path'嵌套资源的控制器路径 - 未定义的方法 `<controller>_path'
【发布时间】:2010-12-24 19:06:42
【问题描述】:

我无法在 /users/2/friends/new 中显示我的表单。我收到了

undefined method `friends_path' for #<#<Class:0x21f0c14>:0x21ef364>

这是表格的开头

<% form_for(@friend) do |f| %> 

还有朋友控制器

def new
     @user = User.find(params[:user_id])
     @friend = @user.friends.build
end

这是路线

resources :users do
       resources :friends
end

以及来自“rake routes”的相关路径

users/:user_id/friends/new(.:format)      {:controller=>"friends", :action=>"new"}

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

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    试试:

    user_friends_path(@user)
    

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

    更新: 至于表格,你可以这样做:

    <%= form_for [@user, @friend] do |f| %>
    

    【讨论】:

    • 感谢您的回复。也许我误解了将路径放在哪里。当我执行 form_for user_friend_path(@friend) 时,它会引发一个更奇怪的错误。我要做的就是显示一个表单来添加“朋友”并将他们关联为属于用户。
    • 啊,我明白你要做什么了。你必须做 form_for [@user, @friend]
    • 非常感谢您的意见。做到了!非常感谢我刚刚开始的帮助。先生,节日快乐。
    • 我一直在绞尽脑汁试图让它发挥作用。非常非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多