因此,我正在创建一个playercard,这基本上是一个用户的个人资料页面。我在后端遇到的问题是,我的私有方法playercard_params只返回user_id,并且并不是所有输入到form...although常规参数的信息都显示了创建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>当我在前端提交表单时,我得到的错误是每个字段都是empty...in the pry,如果我输入playercard_params,只会显示user_id (具有正确的id)
发布于 2020-04-10 02:57:38
我通过将属性的命名约定与前端和后端结合起来解决了这个问题。它成功了!
谢谢你@jvillian的见解!
https://stackoverflow.com/questions/61127637
复制相似问题