玩家#Rails中的Rails NoMethodError

时间:2013-02-14 19:55:43

标签: ruby-on-rails ruby forms erb nomethoderror

我刚刚使用生成脚手架进行此设置,我立即收到此错误。出于某种原因,它试图将“用户”评估为第20行中的方法而仅是用户。它的名字很好,但尽管它们是完全相同的代码(具有不同的名称),但它试图以不同的方式评估第二个代码。

undefined method `user' for #<Player:0xb66e4798>

提取的来源(第20行):

17:   </div>
18:   <div class="field">
19:     <%= f.label :user %><br />
20:     <%= f.text_field :user %>
21:   </div>
22:   <div class="field">
23:     <%= f.label :password %><br />

模板包含跟踪:app / views / players / new.html.erb

由于这是生成的,我自己手动改变的唯一方法是路线。所以这是来自routes.rb的部分,我改变了根目录:

# root :to => 'welcome#index'
root :to => "players#index"

1 个答案:

答案 0 :(得分:2)

您可能会像f一样宣布您的表单<%= form_for @player do |f| %>f.text_field。然后,当您使用@player时,rails magic会尝试将您的符号与:user属性中的一个匹配。

如果Player不是FormTagHelper#text_field_tag的实例变量,则需要17: </div> 18: <div class="field"> 19: <%= f.label :user %><br /> 20: <%= text_field_tag :user %> 21: </div> 22: <div class="field"> 23: <%= f.label :password %><br /> 代替:

{{1}}