Метод частных параметров не показывает данные формы - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я работаю над созданием 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 (с правильный идентификатор)

1 Ответ

0 голосов
/ 09 апреля 2020

Я решил проблему, выстроив соглашение об именах для атрибутов с интерфейсом и фоном. И это сработало!

Спасибо, @jvillian, за понимание !!

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