渲染表单Rails时出现NoMethodError

时间:2012-09-04 08:12:52

标签: 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 %>

错误: undefined方法`shops_path'代表:

<%= form_for(@shop) do |f| %>

问题是我已经在路线文件中指定了商店资源。 为什么还会出现这种错误?

任何帮助将不胜感激,谢谢

3 个答案:

答案 0 :(得分:1)

由于Rails命名约定,您应该使用ShopsController而不是ShopController

答案 1 :(得分:1)

确保rake routes输出中包含以下这些行:

   shops GET    /shops(.:format   {:action=>"index", :controller=>"shops"}
         POST   /shops(.:format)  {:action=>"create", :controller=>"shops"}

OR

   shops POST   /shops(.:format)   {:action=>"create", :controller=>"shops"}

如果他们不在场,请仔细查看routes.rb可能的with_optionsscope或任何其他可能影响resources :shops的范围,以便它不会生成默认的url助手。

答案 2 :(得分:0)

因为你没有在表单标签中指定方法,我猜它会作为GET请求。尝试将该方法添加到您的表单

<%= form_for(@shop), :method => :post do |f| %>