Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 覆盖Rails强参数中的一个属性_Ruby On Rails_Ruby_Controller - Fatal编程技术网

Ruby on rails 覆盖Rails强参数中的一个属性

Ruby on rails 覆盖Rails强参数中的一个属性,ruby-on-rails,ruby,controller,Ruby On Rails,Ruby,Controller,有没有一种方法可以覆盖一个属性,但仍然在Rails中使用强参数?例如,在下面的示例中,如果我希望每次都覆盖此人的姓名,但也要使用person\u params方法。一定有比手动设置@person.name更好的方法,对吗 class PeopleController < ActionController::Base def create @person = Person.new(person_params) @person.name = "ABC" @pers

有没有一种方法可以覆盖一个属性,但仍然在Rails中使用强参数?例如,在下面的示例中,如果我希望每次都覆盖此人的姓名,但也要使用
person\u params
方法。一定有比手动设置
@person.name
更好的方法,对吗

class PeopleController < ActionController::Base

  def create
    @person = Person.new(person_params)
    @person.name = "ABC"
    @person.save
  end

  private

    def person_params
      params.require(:person).permit(:name, :age)
    end
end
class PeopleController
如果您只想将名称改写为其他字符串,或在保存前格式化名称,则只需执行以下操作:

@person = Person.new(person_params.merge!(name: 'ABC'))
如果要在一行中创建和合并,只需执行以下操作:

def create
    @person = Person.create(person_params.merge!(name: 'ABC'))
end

你也可以做类似的事情:

看起来你会形成你想要的参数的散列。从链接:

params = ActionController::Parameters.new({
  person: {
    name: 'Francesco',
    age:  22,
    role: 'admin'
  }
})

permitted = params.require(:person).permit(:name, :age)
permitted            # => {"name"=>"Francesco", "age"=>22}
permitted.class      # => ActionController::Parameters
permitted.permitted? # => true

Person.first.update!(permitted)
# => #<Person id: 1, name: "Francesco", age: 22, role: "user">
params=ActionController::Parameters.new({
人:{
姓名:“弗朗西斯科”,
年龄:22,,
角色:'管理员'
}
})
允许=参数要求(:个人)。允许(:姓名,:年龄)
允许的#=>{“姓名”=>“弗朗西斯科”,“年龄”=>22}
允许的.class#=>ActionController::参数
允许。允许?#=>真的
Person.first.update!(准许)
# => #

你为什么要用Ruby以外的另一种语言编写代码。佛罗里达州没有很多Ruby/Rails的演出!