ActionController :: ParameterMissing - 缺少param或值为空:

时间:2015-05-05 15:00:06

标签: ruby-on-rails ruby ruby-on-rails-4 simple-form strong-parameters

提交rails 4表单时出现以下错误:

ActionController::ParameterMissing - param is missing or the value is empty: player:

表格是正确的。问题是它是一个字段形式,我希望该字段是可选的,因此如果用户没有输入该字段的信息,则单击“提交”将转到该站点的下一部分。问题是我需要使用强参数来消毒params。以下是我到目前为止的情况:

def presentation_params
    params.require(:player).permit(:name)
end

问题在于它需要播放器,并且只有在表单字段不为空时才会提交播放器数据。

我也试过更换“#34;要求"用" fetch"但它返回相同的错误。

如何让用户按下提交,继续前进,但不会通过摆脱强大的参数来引入安全问题?

2 个答案:

答案 0 :(得分:0)

您可以在使用player之前检查请求中是否有presentation_params个参数。我假设你正在做这样的事情:

@player.attributes = presentation_params 

在这种情况下你可以这样做:

@player.attributes = presentation_params if params.has_key?(:player)

如果请求中没有播放器参数,您可以跳过更多代码。

答案 1 :(得分:0)

您可以尝试不在强参数中包含名称,并创建这样的播放器:

Player.create(optional_strong_parameters) do |p|
  p.name = params[:name]||'Default'
end