Rails无法确定词根的模型的路由问题

时间:2013-07-02 07:09:04

标签: ruby-on-rails url-routing

我有一个名为Faq的模型,看起来Rails在使用resources :faq生成的动态路径时遇到了困难。

以下是rake routes推出的内容。

   admin_faq_index GET    /admin/faq(.:format)                                   admin/faq#index
                   POST   /admin/faq(.:format)                                   admin/faq#create
     new_admin_faq GET    /admin/faq/new(.:format)                               admin/faq#new
    edit_admin_faq GET    /admin/faq/:id/edit(.:format)                          admin/faq#edit
         admin_faq GET    /admin/faq/:id(.:format)                               admin/faq#show
                   PUT    /admin/faq/:id(.:format)                               admin/faq#update
                   DELETE /admin/faq/:id(.:format)                               admin/faq#destroy

问题是当我像这样使用form_for时:

<%= form_for([:admin, @faq]) do |f| %>

我收到此错误:

undefined method `admin_faqs_path' for #<#<Class:0x007fdda4627a58>:0x007fdda41a5098>

3 个答案:

答案 0 :(得分:1)

尝试将routes.rb更改为

resources :faqs

然后验证@faq不是nil。

根据您使用表单的事实,我猜您的常见问题解答不是一种独特的资源。

答案 1 :(得分:0)

您只需在config/initializers/inflector.rb

中添加例外 像这样一个

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w(faq)
end

它为rails的复数和变形规则添加了一个例外

答案 2 :(得分:0)

正如您在路由resources :faq中提到的那样,它尚未生成路由admin_faqs_path,但默认情况下在form_for中会搜索admin_faqs_path。所以我们需要覆盖它。请将代码更改为

<%= form_for([:admin, @faq], :url => admin_faq_index_path, :method => :post) do |f| %>