Ruby on Rails的相对新手。
在我的form_for
操作
SomeobjController#new
方法
= form_for @someobj do |f|
.
.
.
%p.submits
= f.submit "Submit", :class => "submit"
生成提交param[]
数组,其中包含表单中设置的所有字段的@someobj
哈希值,以便
param[someobj] => { "field1" => "val1", "field2" => "val2", ... }
我希望为someobj.to_s
使用param[someobj]
到SomeobjController#create
的结果使用不同的值,以便
param[someobj] => "strvalfromtos"
我怀疑它是相对的,但为了以防万一,此#new
操作的基础模型在数据库中不是持久的(即Someobj
不是从ActiveRecord::Base
派生的,虽然包括ActiveModel的某些部分。)
在调用#create之后,我还没有运气试图调整它,但是从#new到#create的提交要我修改。我不清楚我是否应该更多地关注form_for
声明或在控制器中做一些特别的事情(我猜测form_for
是正确的焦点)。< / p>
而且,是的,整个事情可能对我来说有点强迫症,但实际的字段名很长(适用于模型)但#create所需的数据非常小。
假设已经写过someobj.to_s
,是否有相对无痛的方法呢?
非常感谢, 理查德
答案 0 :(得分:0)
更改强>
当您提交表单时,您的控制器将收到params哈希,如您所述(Rails params explained?)
这意味着您可以更改您希望的哈希值中的任何值:
def create
#has access to the params hash
params[:owner][:key] = value
end
当create
方法接收到哈希对象时,您必须在此处更改它。但是因为它是标准的哈希(已经声明),你应该能够根据需要改变它
添加强>
如果要为params散列添加值,可以使用.merge
方法,如下所示:
def create
#has access to the params hash
params[:key].merge(user_id: current_user.id)
end