2013-01-09 43 views
1

我有一個each循環,它會創建一組複選框。在rails中使用check_box_tag只選擇所選的check_boxes?

控制器代碼

def new 
    @foo = Foo.new 
    @books = Book.all 
    end 

    def edit 
    @foo = Foo.find(params[:id]) 
    @books = Book.all 
    end 

厄爾布文件如下所示:

<div> 
    <% @books.each do |book| %> 
    <%= check_box_tag 'books[]', book.id, (checked = true if @books.collect{|b| b.id}.include?(book.id)) %> 
    <%= book.name %><br /> 
    <% end %> 
</div> 

我在這裏試圖只顯示所選擇的check_box值當我編輯頁面。但在我的情況下,它選擇所有的值,即使一些複選框未選中。那麼如何在rails中使用check_box_tag只選擇一個選中的值?

回答

0
... @books.each do |book| 
... if @books.collect{|b| b.id}.include?(book.id)) 

這種情況總是如此。 @books將始終包含book及其id

小錯誤:您不需要本地var checked那裏。而不是map/include,你應該u any?

<%= check_box_tag 'books[]', book.id, @books.any?{|b| b.id == book.id} %> 

注意:病情仍總是如此。也許你在準備問題時過分簡化了代碼,並省略了重要部分。

+0

感謝您的迴應!是的,上面的代碼仍然選擇所有check_boxes。像你說的那樣,病情依然如此!那麼,有沒有不同的方式來處理這個問題? – diya

+0

@diya:是的,修改條件。你如何存儲關於選定複選框的數據?使用這些知識。 –

+0

如果@books是零呢?它將打破。 – user588324

相關問題