У меня возникли проблемы с переопределением параметров именованного маршрута при редактировании или создании сообщения. Я получаю сообщение об ошибке undefined method playerId for nil:NilClass
. Он по-прежнему перенаправляет на :id
вместо параметров: playerId
только с помощью методов создания и редактирования.Переопределение параметров именованного маршрута Редактирование и создание
Ниже :playerId
должно быть 101, но 6 - это :id
, не зная, почему он его подбирает.
SELECT `players`.* FROM `players` WHERE `players`.`playerId` = 6 LIMIT 1 [["playerId", "6"]]
Маршруты
resources :players, param: :playerId
Контроллер
def show
@player = Player.find_by(playerId: params[:playerId])
@season = PlayerStat.where("playerId = ?", @player.playerId).joins(:matches).where('matches.gameType = ?', 0).where('matches.teamId = ?', @player.teamId).group('year(matches.matchDate) DESC')
end
def edit
end
def create
@player = Player.new(player_params)
respond_to do |format|
if @player.save
format.html { redirect_to @player, notice: 'PLayer was successfully created.' }
format.json { render :show, status: :created, location: @player }
else
format.html { render :new }
format.json { render json: @player.errors, status: :unprocessable_entity }
end
end
end
def update
@player = Player.find params[:playerId]
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
def set_player
@player = Player.find_by(playerId: params[:playerId])
end
def player_params
params.require(:player).permit(:playerId, :first_name, :last_name, :dob, :teamId, :jumper_no, :height, :weight, :image, team_attributes: [:teamId, :name], player_stats_attributes: [:playerId, :gameDate, :kicks, :marks])
end
Удивительно, но снова Паван. Восстанавливает Бога. – DollarChills