Rails嵌套在命名空间内的资源

ano*_*ard 3 routing ruby-on-rails activeresource

在我看来,我有这个:

form_for [:support, @thread, @reply], url: support_thread_replies_path do |f|
Run Code Online (Sandbox Code Playgroud)

这在我的routes.rb:

namespace :support do
  resources :threads do
    resources :replies
  end
end
Run Code Online (Sandbox Code Playgroud)

这不起作用:

路由错误

没有路线匹配 {:action=>"new", :controller=>"support/replies"}

如果我url:从我的键中删除键form_for,我只是NoMethodError在表单助手尝试调用未定义的路径助手方法时得到一个:

即使我:support在示例视图代码中从数组的开头删除了符号,我也得到了相同的路由错误(使用:support了另一个类似问题的答案)

cle*_*lem 5

将一个实例Thread作为路径助手中的第一个参数传递:

support_thread_replies_path(@thread)
Run Code Online (Sandbox Code Playgroud)

这样Rails知道你正在创建一个新的回复线程.

不过,我相信你应该能够在没有:url密钥或路径助手的情况下做到这一点.

  • 顺便说一句,我总是被这个抓住了.`rake routes`对这些事情真的很有帮助. (2认同)