2015-05-31 26 views
1

如果'@clans'數組不是零,並且它包含給定複選框的'值',我想根據check_boxes創建一個表單,並且希望檢查它。rails check_box_tag disapear

我的第一個atemnpt是:

<%= check_box_tag 'clans[]','Feniks', true if [email protected]? and @clans.include? 'Feniks' %> 

但當@clans爲零,則check_box消失,就像它被禁用。

我設法用這樣的代碼來解決這個問題:

<% if [email protected]? and @clans.include? 'Feniks' %> 
    Feniks: <%= check_box_tag 'clans[]','Feniks', true %> 
    <% else %> 
    Feniks: <%= check_box_tag 'clans[]','Feniks' %> 
    <% end %> 

,但它看起來那麼糟糕,有必須寫這個:)

請告訴我如何處理一個更好的辦法這:) :)

回答

0

將括號內的if邏輯。

<%= check_box_tag 'clans[]','Feniks', (true if [email protected]? and @clans.include? 'Feniks') %> 

在您的代碼中,if用作修飾符。像print 10 if x.present?。在此示例中,如果x不是空白,則此方法調用print(10)將發生,否則不會。同樣的比喻也適用於你的情況。在ERB標籤裏面,你的代碼被解釋爲:

<%= check_box_tag('clans[]','Feniks', true) if <condition> %> 

這就是爲什麼當條件是真實的,方法得到調用否則不是。你可以寫出整個if部分爲:

<%= check_box_tag 'clans[]','Feniks', @clans.try(:include?, 'Feniks') %> 
+0

我可以發誓我試過這個:)我會接受我什麼時候可以 – Kazik