在Rails`form_for`帮助器中向控制器发送其他表单数据

时间:2014-05-29 02:09:09

标签: ruby-on-rails forms

如果我有用户型号并且我使用:

form_for @user, url: {controller: :user, action: :create} do |f|

我可以添加我需要的字段(例如):

<%= f.text_field :name %>

但是在我正在处理的这个特定的管理页面上,我想将其他数据发送回我的控制器,这些数据不是用户模型的一部分,即

<%= f.text_field :some_info %>

这给了我一个'未定义的方法some_info`错误。

有没有办法可以让我的表单助手允许我设置其他字符串,作为控制器逻辑的一部分使用?

2 个答案:

答案 0 :(得分:2)

我们可以在rails中使用一个名为attr_accessor的方法来定义不在指定模型中的其他字段。

试试这样:

在model.rb文件中添加以下行

attr_accessor :some_info

并将此行添加到表单

<%= f.text_field :some_info %>

答案 1 :(得分:1)

@gFontaniva是正确的,而不是

<%= f.text_field :some_info %>

您将其从表单变量中排除,并使用标记方法,如:

<%= text_field :some_info, '' %>

然后可以从表单模型范围之外的控制器访问它,因此访问了第一个示例:

params[:user][:some_info]

第二个版本:

params[:some_info]

正如我所需要的那样。