在rails中使用span而不是label

时间:2012-12-31 09:19:13

标签: html ruby-on-rails ruby-on-rails-3 forms

使用:

 <%= f.label :registration,"Registration" %>

将创建一个标签:

<label for="cad_registration">Registration</label>

我希望它像这样一个跨度:

<span for="cad_registration">Registration</span>

5 个答案:

答案 0 :(得分:3)

<span>元素不支持for - 属性。因此,使用<span> - 元素而不是<label>没有意义。

为什么不使用(CSS)样式将<label>设置为所需的结果? 如果您只想设置此特定元素,请使用id - 属性。

例如,使用以下内容将标签文本设为红色:

ERB:

<%= f.label :registration,"Registration", :html => { :id => "my-label" } %>

CSS:

#my-label {
    text-color: red;
}

答案 1 :(得分:2)

您不是在创建标签,不应该使用label帮助器。 for元素上不存在<span>属性。

将代码替换为您编写的底线,但没有for

<span>Registration</span>

答案 2 :(得分:2)

您可以使用自定义表单构建器来修改表单标签的输出方式。这里有一个简短的概述 - http://code.alexreisner.com/articles/form-builders-in-rails.html。关于这个主题还有一个Railscast更彻底,但这是一个专业(付费)剧集。

答案 3 :(得分:1)

我已经提出了以下解决方案,扩展了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;),

这些链接帮助了我link1link2,您可能想要进行更多修改

HTH

答案 4 :(得分:0)

只记下红宝石外的跨度

<span for=<%= :registration %>><%="Registration"%></span>