#new - form_for中的NoMethodError,但资源设置?

时间:2014-12-17 23:36:26

标签: ruby-on-rails ruby

所以,我尝试了一些步骤进入轨道并在SO周围搜索,但无法找到任何答案。我一看到NoMethodError undefined method,就会不断为第1行获取/tswhois/new。怎么了?

控制器/ tswhois_controller.rb

class TswhoisController < ApplicationController
  def index
    @tswhois = Tswhois.all
  end

  def new
    @tswhois = Tswhois.new
  end
end

配置/ routes.rb中

Rails.application.routes.draw do
  resources :tswhois
end

视图/ tswhois / new.html.erb

<% form_for (@tswhois) do |f| %>
    <p>
      <%= f.label :url %>
      <%= f.text_field :url %>
    </p>
    <p>
      <%= f.submit %>
    </p>
<% end %>

控制台

rails console
Loading development environment (Rails 4.1.8)
2.1.5 :001 > Tswhois.count
   (10.6ms)  SELECT COUNT(*) FROM `tswhois`
 => 0 

screenshot

4 个答案:

答案 0 :(得分:0)

您可以复制并粘贴整个错误消息吗?另请尝试:<%= form_for(@tswhois) do |f| %>没有空格且带有=符号

答案 1 :(得分:0)

将资源添加到routes.rb后,您是否重启了服务器?您为路线文件提供的代码缺失&#39; end&#39;在它的最后。

答案 2 :(得分:0)

记住rails中的约定:模型名称是单数,即最后没有ses。路由是围绕您的模型名称构建的。您的错误页面建议Rails无法获取操作的正确路由,在此示例中为new操作。

答案 3 :(得分:0)

查看您的views/tswhois/new.html.erb代码。您发布的代码段可能来自views/tswhois/_form.html.erb

它可能有一行<%= link_to 'something', tswhois_index_path %>

将其更改为

<%= link_to 'something', tswhois_path %>

事情就是这个名字&#39; tswhois&#39;由于单个实例和实例数组的单数和复数约定,因此将会相当混乱。