首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Private Params方法不显示表单数据

Private Params方法不显示表单数据
EN

Stack Overflow用户
提问于 2020-04-10 02:17:03
回答 1查看 58关注 0票数 0

因此,我正在创建一个playercard,这基本上是一个用户的个人资料页面。我在后端遇到的问题是,我的私有方法playercard_params只返回user_id,并且并不是所有输入到form...although常规参数的信息都显示了创建playercard所需的所有数据。我认为问题可能在前端,但通过向后工作得出的结论是问题在后端。

这是我的控制器:

代码语言:javascript
复制
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模型:

代码语言:javascript
复制
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

和序列化程序,如果有帮助的话:

代码语言:javascript
复制
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

以下是我的参数:

代码语言:javascript
复制
<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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 02:57:38

我通过将属性的命名约定与前端和后端结合起来解决了这个问题。它成功了!

谢谢你@jvillian的见解!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61127637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档