【问题标题】:Rails NoMethodError in Players#new玩家中的 Rails NoMethodError#new
【发布时间】:2013-02-14 19:55:43
【问题描述】:

我刚刚使用生成脚手架进行此设置,但我立即收到此错误。出于某种原因,它试图将“用户”作为第 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"

【问题讨论】:

  • 没关系,谢谢 nbarraille。用户在表中被称为用户名,但用户在模型中

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


【解决方案1】:

您可能像这样声明您的表单f&lt;%= form_for @player do |f| %&gt;。然后,当您使用 f.text_field 时,rails magic 会尝试将您的符号与 @player 属性之一匹配。

如果: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 />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多