如果我有用户型号并且我使用:
form_for @user, url: {controller: :user, action: :create} do |f|
我可以添加我需要的字段(例如):
<%= f.text_field :name %>
但是在我正在处理的这个特定的管理页面上,我想将其他数据发送回我的控制器,这些数据不是用户模型的一部分,即
<%= f.text_field :some_info %>
这给了我一个'未定义的方法some_info`错误。
有没有办法可以让我的表单助手允许我设置其他字符串,作为控制器逻辑的一部分使用?
答案 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]
正如我所需要的那样。