Получение ошибки: неопределенный метод `errors 'для nil: NilClass при попытке использовать форму - PullRequest
0 голосов
/ 12 марта 2019

У меня есть представление, что это метод index другого контроллера, и я пытаюсь добавить форму на страницу, однако я получаю сообщение об ошибке

undefined method `errors' for nil:NilClass

Я вполне уверен, что это как-то связано с моей маршрутизацией, но мне трудно понять, где происходит ошибка.

Вот вид с формой

<% @song_ranks.each do |song_rank| %>
  <tr>
    <td><%= song_rank.title %></td>
    <td style="padding-left: 15px;"><%= song_rank.artist %></td>
    <td style="text-align: center;"><%= song_rank.ranknum %></td>
    <td style="white-space: nowrap; padding-left: 35px;">
    <td> <%= render 'layouts/songrankform', song_rank: @song_rank %> </td>

    </td>
  </tr>
<% end %>

вот метод в контроллере

  def updaterank
    respond_to do |format|
      if @song_rank.update(song_rank_params)
        format.html { redirect_to @band_song, alert: 'Song has been ranked.' }
        format.json { render :show, status: :ok, location: @band_song }

      else
        format.html { render :edit }
        format.json { render json: @band_song.errors, status: :unprocessable_entity }
      end

    end

Вот мой файл route.rb

  resources :band_songs do
    post 'upvote', to: 'band_songs#upvote'
    post 'band_songs_action'
    post 'updaterank', to: 'band_songs#updaterank'
  end

Форма на самом деле является частью другой модели, которую я скопировал в это представление

Существует модель для этой частичной формы и другая модель для представления и контроллера, в которые я помещаю форму. Итак, я пытаюсь сделать так, чтобы форма в другом виде сохранялась в другой модели.

1 Ответ

1 голос
/ 12 марта 2019

По вашему вопросу кажется, что вы не инициализировали @song_rank в действии индекса.

Вы неправильно передаете объект формы.Попробуйте изменить

<td> <%= render 'layouts/songrankform', song_rank: @song_rank %> </td>

на

<td> <%= render 'layouts/songrankform', song_rank: song_rank %> </td>

Потому что в вашем цикле song_rank является правильным объектом, а не @song_rank

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...