如果我在<span class='req'>•</span>
表单助手上设置了一个选项,我想在我的视图中的<label>
标记中添加:label
。即。
<%= f.label :address_1, "Address 2:", :req => true -%>
应该产生:
<label for="model_address_1"><span class='req'>•</span> Address 1:</label>
而不是:
<label for="model_address_1" req="true">Address 1:</label>
更新:我这样做是为了试图干掉我的代码,我意识到我可以将上面的span
代码段粘贴到我所有代码中的所有标签中观点,但我想避免这种情况。
答案 0 :(得分:2)
这是未经测试的,但这些方面的内容应该有效。
# in lib/labeled_form_builder.rb
class LabeledFormBuilder < ActionView::Helpers::FormBuilder
def label(field_name, label = nil, options = {})
if options.delete(:req)
label ||= field_name.to_s.humanize
label = @template.content_tag(:span, "•", :class => "req") + " " + label
end
super(field_name, label, options)
end
end
然后在您的视图中使用该构建器
<%= form_for @item, :builder => LabeledFormBuilder do |f| %>
您可能对我Mastering Rails Forms screencast series的第3集感兴趣,我会详细介绍如何创建表单构建器。
答案 1 :(得分:0)
为了让它在Rails 3中运行而对ryanb进行微小的改动3.你只需告诉content_tag不要逃避子弹。
class LabeledFormBuilder < ActionView::Helpers::FormBuilder
def label(field_name, options = {}, label = nil)
if options.delete(:req)
label ||= field_name.to_s.humanize
label = @template.content_tag(:span, "•", {:class => "req"}, false) + " " + label
end
super(field_name, label, options)
end
end