Using:
<%= f.label :registration,"Registration" %>
将创建一个标签:
<label for="cad_registration">Registration</label>
我希望它是一个像这样的span:
<span for="cad_registration">Registration</span>
<span>
元素不支持for
-属性。因此,使用<span>
-元素代替<label>
是没有意义的。
为什么不使用(CSS)样式将<label>
样式化为期望的结果?使用id
-属性,如果你只是想样式这个特定的元素。
ERB:
<%= f.label :registration,"Registration", :html => { :id => "my-label" } %>
CSS: #my-label {
text-color: red;
}
如果您没有创建标签,则不应该使用label
帮助器。for
属性在<span>
元素上不存在。
将您的代码替换为您编写的底线,但不包含for
:
<span>Registration</span>
您可以使用自定义表单构建器来修改表单标签如何输出到您的需求。这里有一个简短的概述- http://code.alexreisner.com/articles/form-builders-in-rails.html。还有一个关于这个话题的Railscast,它更彻底,但它是一个专业的(付费的)剧集。
我已经提出了以下解决方案,扩展rails的FormBuilder
应用程序帮助器 中的module ApplicationHelper
class TestFormBuilder < ActionView::Helpers::FormBuilder
include ActionView::Helpers::TagHelper
def span(name, options = {})
css_classes = []
css_classes = options[:class].to_s if options[:class]
content_tag('span', name, :class => css_classes.join(' '))
end
end
end
,在视图中可以使用
<%= form_for @<module>, :builder => ApplicationHelper::TestFormBuilder do |f| %>
#your code
<%= f.span(:name) %>
<% end %>
这个工作,感谢你的问题,这让我想到扩展FormBuilder;),
和这些链接帮助我链接1,链接2,你可能需要做更多的修改
HTH
写下ruby外的span
<span for=<%= :registration %>><%="Registration"%></span>