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]