ruby-on-rails - 影响从 form_for 设置的结果参数

标签 ruby-on-rails ruby form-for

这里是 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/

相关文章:

ruby-on-rails - Rails 4 - 设置,在创建新用户时自动创建配置文件

ruby - 如何获取由Base64编码字符串创建的图像中显示的值?

ruby-on-rails - form_for 中的标签

ruby-on-rails - Rails : form_for and radio buttons

ruby-on-rails - 使用 form_for 时出现未定义方法 'to_key' 错误

ruby-on-rails - 如何在 Rails 中使用 "self"关键字

ruby-on-rails - 在 Rails 中,是否可以限制谁可以使用 api 登录 google?

ruby-on-rails - RoR top100 照片

javascript - AJAX 与 Rails 3 和 jQuery?

ruby - 检查 ruby 是早上还是下午