在rails中使用span代替label



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>

相关内容

  • 没有找到相关文章

最新更新