Ruby on rails 渲染窗体Rails时的NoMethodError
routes.rb:Ruby on rails 渲染窗体Rails时的NoMethodError,ruby-on-rails,Ruby On Rails,routes.rb: resources :shops shop_controller.rb: def new @shop=Shop.new end new.html.erb: <%= form_for(@shop) do |f| %> .... <% end %> .... 错误: 未定义的方法“shops_path”用于: <%= form_for(@shop) do |f| %> 问题是我已经在routes文件中指定了shop资源
resources :shops
shop_controller.rb:
def new
@shop=Shop.new
end
new.html.erb:
<%= form_for(@shop) do |f| %>
....
<% end %>
....
错误:
未定义的方法“shops_path”用于:
<%= form_for(@shop) do |f| %>
问题是我已经在routes文件中指定了shop资源。
为什么还会犯这样的错误
感谢您的帮助,由于Rails命名约定,您应该使用
ShopsController
而不是ShopController
。请确保您的rake routes
输出中有以下行:
shops GET /shops(.:format {:action=>"index", :controller=>"shops"}
POST /shops(.:format) {:action=>"create", :controller=>"shops"}
或
如果它们不存在,请仔细查看您的
路由.rb
,查找可能的选项、范围或任何其他可能影响资源的作用域:shops
,这样它就不会生成默认的url帮助程序。因为您没有在表单标记中指定方法,我想这是一个GET请求。尝试将该方法添加到您的表单中
<%= form_for(@shop), :method => :post do |f| %>
:post do | f |%>
shop\u controller
应该是shops\u controller
你能给你的问题添加rake routes
的输出吗?new\u shop GET/shops/new(:format){:action=>“new”,:controller=>“shops”},这里是“rake routes”之后的信息对不起,实际上是“shops\u controller.rb”。当我发布这个问题时,我错过了“s”。嗨,伙计们,非常感谢你们的所有投入。一旦我解决了问题,我会发布解决方案。再次感谢,谢谢。事实上,我得到了答案中的所有rake路由输出。我对routes.rb中的范围没有任何了解。但例外情况仍然存在。奇怪的问题。是的,真的很奇怪。若你们还在寻找答案,我建议你们编辑你们的问题,并从你们的异常中添加完整的回溯。嗨,伙计们,非常感谢你们的所有输入。一旦我解决了问题,我会发布解决方案。再次感谢。如果我将rails的版本设置为3.1.3,它就可以工作了。但是在Rails3.2中,问题再次出现。大家好,非常感谢你们的投入。一旦我解决了问题,我会发布解决方案。再次感谢。
<%= form_for(@shop), :method => :post do |f| %>