在块中定义字段标签 - 出错时,field_with_errors div标签不在正确的位置

时间:2012-12-13 15:23:15

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

我在validates_acceptance_of :terms, :message => "must be accepted"模型中使用user.rb,并且正在使用bootstrap-sass

我的复选框代码在视图中如下所示:

<div class="control-group">
  <%= f.label :terms, :class => "control-label" do %>
    Accept <%= link_to('Terms of Use *', "#myTOUModal", :"data-toggle" => "modal") %>
  <% end %>
  <div class="controls">
    <%= f.check_box :terms %>
  </div>
</div>

出于某种原因,当在表单提交时未选中“条件”复选框时,表单顶部会显示相应的错误消息,但field_with_errors div类存在问题。复选框标签。

呈现页面的HTML如下所示:

<div class="control-group">
  <label class="control-label" for="user_terms">
    Accept <a href="#myTOUModal" data-toggle="modal">Terms of Use *</a>
  </label>
  <div class="controls">
    <input name="user[terms]" type="hidden" value="0" />
    <div class="field_with_errors">
      <input id="user_terms" name="user[terms]" type="checkbox" value="1" />
    </div>
  </div>
</div>

结果是复选框字段标签在出错时未突出显示。有没有办法强制field_with_errors类的div标签位置显示在<div class="control-group">标记之后?为什么使用块来定义字段标签会导致field_with_errors标记位置失效?有没有人有这方面的经验?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为这是一个错误。问题在于阻止。无阻塞地定义您的标签,一切正常。

尝试类似:

<% modal_html = capture do >
  Accept <%= link_to('Terms of Use *', "#myTOUModal", :"data-toggle" => "modal") %>
<% end %>

<%= f.label :terms, modal_html, :class => "control-label" %>

或帮助者:

def modal_html
  #Q{Accept #{link_to('Terms of Use *', "#myTOUModal", :"data-toggle" => "modal")} }.html_safe
end