Маршрутизация с использованием другого параметра не работает при обновлении

#ruby-on-rails #ruby-on-rails-4

#ruby-on-rails #ruby-on-rails-4

Вопрос:

Вместо того, чтобы использовать параметр id по умолчанию, я перенаправляю с помощью playerId . Все работает как должно, но при обновлении записи проигрывателя она перенаправляется обратно к id вместо playerId и показывает эту ошибку undefined method update’ for nil:NilClass`.

Маршруты

 resources :players, param: :playerId
  

Контроллер

 def update
    respond_to do |format|
      if @player.update(player_params)
        format.html { redirect_to @player, notice: 'Player was successfully updated.' }
        format.json { render :show, status: :ok, location: @player }
      else
        format.html { render :edit }
        format.json { render json: @player.errors, status: :unprocessable_entity }
      end
    end
  end

private
    # Use callbacks to share common setup or constraints between actions.
    def set_player
      @player = Player.find_by(playerId: params[:playerId])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def player_params
      params.require(:player).permit(:playerId, :first_name, :last_name, :teamId,:image)
    end
  

Форма

 <%= form_for(@player) do |f| %>
    <%= f.label :playerId %><br>
    <%= f.number_field :playerId %>
    <%= f.label :first_name %><br>
    <%= f.text_field :first_name %>
    <%= f.label :last_name %><br>
    <%= f.text_field :last_name %>
    <%= f.label :teamId %><br>
    <%= f.collection_select(:teamId, Team.all, :teamId, :name, { :prompt => 'Team Select', :selected => @player.teamId }) %>
    <%= f.label :image %><br>
    <%= f.file_field :image %>
    <%= f.submit %>
<% end %>
  

Маршруты

          root GET    /                                 pages#home
      players GET    /players(.:format)                players#index
              POST   /players(.:format)                players#create
   new_player GET    /players/new(.:format)            players#new
  edit_player GET    /players/:playerId/edit(.:format) players#edit
       player GET    /players/:playerId(.:format)      players#show
              PATCH  /players/:playerId(.:format)      players#update
              PUT    /players/:playerId(.:format)      players#update
              DELETE /players/:playerId(.:format)      players#destroy
  

Комментарии:

1. для html или json?

2. для html @TimmyVonHeiss

3. добавьте в вопрос свою форму, пожалуйста

4. Выполнено. удалены div и т.д.

5. что в вашем списке rake routes? Можете ли вы добавить результат к вопросу?