0

私は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_errorsdiv クラスがチェック ボックス ラベルをラップすることに問題があります。

レンダリングされたページの 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>

その結果、チェック ボックス フィールド ラベルがエラーで強調表示されません。クラスの div タグの配置を強制的にタグのfield_with_errors直後に表示する方法はあり<div class="control-group">ますか? ブロックを使用してフィールド ラベルを定義すると、field_with_errorsタグの配置が乱れるのはなぜですか? 誰もこれを経験していますか?

ありがとうございました

4

1 に答える 1

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
于 2012-12-13T15:49:42.517 に答える