【问题标题】:ActionController::ParameterMissing - param is missing or the value is empty:ActionController::ParameterMissing - 参数丢失或值为空:
【发布时间】:2015-05-05 23:59:27
【问题描述】:

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

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

表格是正确的。问题是它是一个单字段表单,我希望该字段是可选的,这样如果用户没有为该字段输入信息,点击提交就可以转到网站的下一部分。问题是我需要使用强参数来清理参数。这是我目前所拥有的:

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

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

我也试过用“fetch”替换“require”这个词,但它返回了同样的错误。

我如何允许用户按下提交,仍然继续前进,但又不会通过摆脱强参数来引入安全问题?

【问题讨论】:

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


    【解决方案1】:

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

    @player.attributes = presentation_params 
    

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 2021-11-20
        • 1970-01-01
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多