我有一个名为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>
答案 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| %>