Rails NoMethodError в Players#new

Я только что использовал генерацию каркаса, чтобы сделать эту настройку, и сразу же получил эту ошибку. По какой-то причине он пытается оценить «пользователя» как метод в строке 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

Поскольку это было сгенерировано, единственное, что я сам вручную изменил, это маршруты. Итак, вот часть из route.rb, где я изменил корень:

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

person Cman131    schedule 14.02.2013    source источник
comment
неважно, спасибо, nbarraille. пользователь назывался username в таблице, но user в модели   -  person Cman131    schedule 15.02.2013


Ответы (1)


Вероятно, вы объявили свою форму f так: <%= form_for @player do |f| %>. Затем, когда вы используете f.text_field, магия рельсов пытается сопоставить ваш символ с одним из свойств @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 />
person nbarraille    schedule 14.02.2013