Rails formtastic - форма редактирования не передает экземпляр для метода обновления в контроллере

У меня есть форма, которую я использую для «редактирования» существующих команд. Вот вид:

/app/views/teams/edit.html.erb

<%= semantic_form_for @team do |f| %>

  <%= f.inputs %>
  <%= f.actions %>

<% end %>

А вот код контроллера:

/app/controllers/teams_controller.rb

  def edit
    @team = Team.find(params[:id])
  end

  def update
    if @team.update_attributes(params[:team])
      redirect_to @team
    else
      render 'edit'
    end
  end

Однако, когда я захожу в /teams/1/edit и меняю название команды и нажимаю «Обновить», чтобы отправить форму, появляется ошибка: неопределенный метод `update_attributes' для nil:NilClass

В начале метода обновления в контроллере я сделал:

raise @team.inspect

и мое подозрение подтвердилось, когда я увидел, что @team был проверен в методе обновления, он был нулевым (т.е. его значение не было передано).

Кто-нибудь знает, где я ошибаюсь здесь?

Спасибо.


person Kopty    schedule 13.09.2012    source источник


Ответы (1)


Проблема в том, что вам нужно определить @team в действии обновления, прежде чем вы сможете его использовать. Просто добавьте эту строку в начало действия:

@team = Team.find(params[:id])
person EfratBlaier    schedule 13.09.2012
comment
Д'ОХ! Я чувствую себя глупо. Потратил столько времени на такую ​​ерунду. Спасибо, сэр. - person Kopty; 13.09.2012