Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 渲染窗体Rails时的NoMethodError_Ruby On Rails - Fatal编程技术网

Ruby on rails 渲染窗体Rails时的NoMethodError

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资源

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资源。 为什么还会犯这样的错误


感谢您的帮助,由于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| %>