Итак, я работаю над созданием playercard, который по сути является страницей профиля для пользователя. Проблема, с которой я столкнулся на сервере, заключается в том, что мой приватный метод playercard_params возвращает только user_id, а не всю информацию, введенную в форму ... хотя обычные параметры показывают все данные, необходимые для создания playercard. Я думал, что проблема может быть на переднем крае, но работая в обратном направлении, пришел к выводу, что проблема здесь на заднем плане.
Вот мой контроллер:
class Api::V1::PlayercardController < ApplicationController
before_action :set_user
def index
if params[:user_id]
@playercard = @user.playercard
else
@playercard = Playercard.all
end
render json: @playercard
end
def show
@playercard = Playercard.find(params[:id])
render json: @playercard
end
def create
@playercard = Playercard.new(playercard_params)
binding.pry
if @playercard.save
render json: @user
else
render json: {
error: @playercard.errors.full_messages.to_sentence
}
end
end
def update
@playercard = Playercard.find(params[:id])
if @playercard.update(playercard_params)
render json: @playercard
else
render json: {
error: @playercard.errors.full_messages.to_sentence
}
end
end
private
def playercard_params
params.require(:playercard).permit(:player_nickname, :player_height_in_feet, :player_height_in_inches, :player_weight, :player_age, :player_fav_player, :user_id)
end
def set_user
@user = User.find(params[:user_id])
end
end
Моя модель playercard:
class Playercard < ApplicationRecord
belongs_to :user
validates :player_nickname, :player_height_in_feet, :player_height_in_inches, :player_weight, :player_age, :player_fav_player, presence: true
end
и сериализатор, если это поможет:
class PlayercardSerializer < ActiveModel::Serializer
attributes :id, :player_nickname, :player_height_in_feet, :player_height_in_inches, :player_weight, :player_age, :player_fav_player
belongs_to :user
end
Здесь мои параметры:
<ActionController::Parameters {"playerNickname"=>"white mamba", "playerHeightFeet"=>"6", "playerHeightInches"=>"3", "playerAge"=>"30", "playerWeight"=>"170", "playerFavPlayer"=>"Kobe", "user_id"=>"1", "controller"=>"api/v1/playercard", "action"=>"create", "playercard"=><ActionController::Parameters {"user_id"=>1} permitted: false>} permitted: false>
Когда я отправляю форму во внешнем интерфейсе, я получаю ошибки о том, что каждое поле пусто ... в pry, если я набираю playercard_params, отображается только user_id (с правильный идентификатор)