对于订阅表单,我需要一个未映射到我的 User 对象的字段。
此字段仅用于要求用户提供邀请码,该邀请码会在控制器的创建操作中对照邀请列表进行检查,但不会保存在任何地方,并且与此 User 对象没有关系。
我试过了:
<%= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= f.input :invitation_key, :input_html => {:name => 'invitation_key', :id => 'invitation_key'} %>
但是不起作用。
使用 Formtastic 执行此操作的正确方法是什么?
你可以做这样的事情而不是f.input。我找不到使用 Formtastic 特定帮助程序来完成此操作的方法:
<li>
<%= label_tag 'Invitation Key' %>
<%= text_field_tag :invitation_key %>
</li>
Melinda 的答案很好,但由于额外的属性与 User 模型有些相关,我会在 User 上创建一个访问器(实际上,我会创建一个 Signup 模型,但这是一个题外话):
class User
attr_accessor :invitation_key
end
然后修改您的控制器以选中
@user.invitation_key
或 params[:user][:invitation_key]
。
这个问题已经在这里得到解答:如何使用 Formtastic 添加与模型无关的输入
要添加与模型无关的输入,请手动将值传递给输入。