【问题标题】:Defining field label in a block - on error, field_with_errors div tag not in right place在块中定义字段标签 - 出错时,field_with_errors div 标签不在正确位置
【发布时间】:2012-12-13 15:23:15
【问题描述】:

我在我的user.rb 模型中使用validates_acceptance_of :terms, :message => "must be accepted",并且正在使用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 标签放置在 &lt;div class="control-group"&gt; 标签之后显示?为什么使用块定义字段标签会导致 field_with_errors 标记放置失效?有人有这方面的经验吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    我认为这是一个错误。问题出在块中。定义你的标签没有阻塞,一切正常。

    尝试类似:

    <% 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
    

    【讨论】:

    • 好的。我这样做是因为我无法让模态引用在一行中工作。关于如何解决这个问题的任何想法?
    • 试试这个,如果没有,使用助手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多