0

我有一个名为的模型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>
4

3 回答 3

1

尝试将 routes.rb 更改为

resources :faqs

然后验证@faq 不为零。

基于您使用表格的事实,我猜您的常见问题解答不是单一资源。

于 2013-07-02T07:26:26.110 回答
0

你只需要添加一个 excpetionconfig/initializers/inflector.rb

像这个

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

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

于 2013-07-02T07:28:07.423 回答
0

正如您在路线中提到的那样resources :faq,它没有生成路线,admin_faqs_pathform_for默认情况下它正在搜索admin_faqs_path. 所以我们需要覆盖它。请将代码更改为

<%= form_for([:admin, @faq], :url => admin_faq_index_path, :method => :post) do |f| %>
于 2013-07-02T07:28:20.887 回答