我有几个来自嵌套模型(:admin accepts_nested_attributes_for :account_setting
)的复选框。默认情况下,复选框的标签是从模型的属性生成的。但是我想使用我在locales文件夹中存储的自定义标签作为键值对。
这是代码,
= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :validate => true, :html => { :method => :put }) do |f|
= f.input :email
= f.inputs :receive_email_digest, :as =>:check_boxes, :for => :account_setting, :label => 'My custom label'
它不起作用。我试过:input_html, :member_label
。
formtastic支持吗?或者我们必须破解它吗?
答案 0 :(得分:1)
inputs
是一个字段集。你告诉formtastic制作一个带有一个列表项和输入:receive_email_digest
的字段集和有序列表,我认为它是一个布尔值。这里的:as
实际上没有任何效果,:check_boxes
适用于has_many
个关联。
你想要这样的东西:
= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :validate => true, :html => { :method => :put }) do |f|
= f.inputs do
= f.input :email
= f.inputs :for => :account_setting do
= f.input :receive_email_digest, :label => 'My custom label'
将呈现两个每个都有一个输入的字段集。或者甚至可能:
= semantic_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :validate => true, :html => { :method => :put }) do |f|
= f.inputs "Email Settings" do
= f.input :email
= f.semantic_fields_for :account_setting do |ff|
= ff.input :receive_email_digest, :label => 'My custom label'
这里的语义字段只是一个范围,不应该输出任何标记。
我相信这两个都会使用en.formtastic.labels.<resource_name>.account_setting.receive_email_digest
作为复选框的标签,其中资源名称是资源的下划线名称。查看the formtastic source了解如何生成这些密钥。