ruby-on-rails - 私有参数方法不显示表单数据
问题描述
所以我正在创建一个玩家卡片,它基本上是一个用户的个人资料页面。我在后端遇到的问题是我的私有方法 playercard_params 只返回 user_id,而不是输入到表单中的所有信息......尽管常规参数显示了创建玩家卡所需的所有数据。我认为问题可能出在前端,但向后工作得出的结论是问题出在后端。
这是我的控制器:
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
我的玩家卡模型:
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>
当我在前端提交表单时,我收到错误说每个字段都是空的......在撬中,如果我输入 playercard_params,只有 user_id 显示(具有正确的 id)
解决方案
我通过将属性的命名约定与前端和后端对齐来解决了这个问题。它奏效了!
感谢@jvillian 的洞察力!!
推荐阅读
- highcharts - 绘制布尔值时使用 max yAxis
- c# - 如何调试导致 this.Close() 在表单加载时挂起的包装类问题?
- php - in_array 函数是阻止代码注入/sql 注入的安全方法吗?
- sql - 将结果减少到仅基于单个字段具有超过 1 个唯一行的结果
- java - 使用 Java 14 发布 Gluon 移动应用程序
- sql - oracle sql中的空间数据-两点之间的距离
- spring-boot - 大写时无法获取 xmlelements 的值
- python - 为什么我不能通过 BeautifulSoup 抓取亚马逊产品?
- php - 使用 Blogger API 和 PHP 设置描述、草稿和永久链接
- javascript - Javascript for loop 在计算 LCM 时给出无限循环错误