首页 > 解决方案 > 如何将模型属性与帖子中的参数匹配

问题描述

我是 Rails 新手,所以我不确定这些术语,但这是类比。我想为 Persons 创建一条新记录,但 post 中的参数与模型不同。提前致谢。

人物模型:

:name, :email

人事控制人:

def person_params
      params.require(:person).permit(:f_name, :person_email)
end

标签: ruby-on-railsruby

解决方案


要么更改您接受的参数,要么更改您发送的参数。

第二个最简单:发送与模型相同的参数。这将与表单助手一起使用,让您只需将参数输入模型。


如果要接受与模型不同的参数,则需要对其进行转换。有很多方法可以做到这一点。在 person_params 中执行此操作可确保一致性。

def PersonsController
  ...

  private def person_params
    # Require a person hash.
    pp = params.require(:person)

    # Transform them to match the model.
    # Don't overwrite if the model fields were sent.
    pp[:name] ||= pp[:f_name)
    pp[:email] ||= pp[:person_email]

    # Add the permit using model fields.
    # f_name and person_email will be filtered out.
    pp.permit(:name, :email)
  end
end

推荐阅读