这里是 Ruby on Rails 的相对新手。
在 View 中为我的 SomeobjController#new
操作使用标准的 form_for
方法
= 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
语句还是在 Controller 中做一些特殊的事情(我猜 form_for
是正确的重点)。
是的,这整件事对我来说可能有点强制症,但实际的字段名很长(适合模型)但#create 所需的数据非常小。
假设 someobj.to_s
已经被写入,是否有一种相对轻松的方法来做到这一点?
非常感谢, 理查德
最佳答案
改变
当您提交表单时,您的 Controller 将收到参数哈希,如您所述 (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
关于ruby-on-rails - 影响从 form_for 设置的结果参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21591894/