2012-12-13 50 views
0

我在user.rb模型中使用validates_acceptance_of :terms, :message => "must be accepted",我使用的是bootstrap-sass在塊中定義字段標籤 - 出錯時,field_with_errors div標籤不在正確的位置

我的複選框代碼看起來像這樣的觀點:

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

出於某種原因,當條件複選框表單提交沒有被選擇,相應的錯誤信息在的頂部顯示出來表單,但是圍繞複選框標籤的div類有field_with_errors問題。

爲渲染頁面的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標籤位置?有人對此有經驗嗎?

謝謝

回答

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 
+0

確定。我做了這個塊,因爲我無法得到模態參考在一行中工作。關於如何解決這個問題的任何想法? – 2scottish

+0

試試這個,如果沒有,請使用助手。 –

+0

這很棒!非常感謝你! – 2scottish