将类添加到自定义form_for标签的标签中

5
如何将自定义类添加到form_for else语句中?
<%= form_for(@user) do |f| %>

      .
      .
      .
      <%= f.label :name, 
        if @user.errors[:name].blank?
          'Name'
        else
          'Name ' + @user.errors[:name].to_sentence
        end
      %>

我尝试过:

else
  'Name ' + @user.errors[:name].to_sentence, class: "some_class"
end

同时尝试了以下方法:

else
   'Name ' + @user.errors[:name].to_sentence, :class => "some_class"
end

但是两者都会产生意外的错误。

我只是想在表单提交时自定义输入标签以显示验证错误,并希望更改文本颜色。

1个回答

4
我猜你可以用一行代码做到这一点:
<%= f.label :name, (@user.errors[:name].blank? 'Name' : 'Name ' + @user.errors[:name].to_sentence) %>

然后:

<% if @user.errors[:name].blank? %>
  <%= f.label :name, 'Name' %>
<% else %>
  <%= f.label :name, 'Name ' + @user.errors[:name].to_sentence, :class => "some_class"  %>
<% end %>

是的,if/else语句采用长格式,因为我只想向一个输出添加一个类。在这种情况下,else语句的输出应该向f.label :name添加一个类。 - DawgOnKing
谢谢zishe,你有什么想法为什么我的原始方法是相同的,但在单个erb标记内不起作用,而你的方法在每行都有标记时却可以? - DawgOnKing
你不能使用<% ... %>多行代码块,应该将它们分别放在每一行。 - zishe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接