Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 传递用于创建和更新模型的参数_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 传递用于创建和更新模型的参数

Ruby on rails 传递用于创建和更新模型的参数,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我想知道,有没有更简单的方法来做以下事情 #controller's action @my_model = MyModel.create field1: params[:field1], field2: params[:field2], field3: params[:field3], field4: params[:field4] # and so on..... 我会用

我想知道,有没有更简单的方法来做以下事情

#controller's action
@my_model = MyModel.create field1: params[:field1],
               field2: params[:field2],
               field3: params[:field3],
               field4: params[:field4]
               # and so on.....
我会用

  @my_model = MyModel.create params
但是由于
params
总是包含Rails添加的其他键,它会工作吗

附言。 更新模型时也会遇到同样的问题(这能正常工作吗?)


将参数作为嵌套散列发送,如

{:my_model => {:field1 => 'blah', :field2 => 'blah'}, :controller => 'something', :action => 'something_else'}
这样你就可以说

@my_model = MyModel.create params[:my_model]

如果您在创建表单时遵循约定,Rails会自动执行此操作。

如果表单来自某个表单,您应该能够传入
params[:my_model]
或它发送的任何内容。如果不能,则意味着没有使用Rails表单/表单字段,或者没有正确命名它们。或者,您应该使用只包含所需字段的表单模型。在这种情况下,使用表单帮助程序
(form\u for)
这将很有帮助。如果我不能使用form\u for,有没有办法简化我的代码,例如,使用反射或类似的方法?如果您不能使用form\u for,这不应阻止您仍然遵守rails约定,即如果您使用text\u field\u标记,您仍然可以将输入元素名称安排为“my\u model[field1]”
@my_model = MyModel.create params[:my_model]