2014-05-01 56 views
0

我有一個簡單的待辦事項應用程序,其中有一個表格的新頁面,型號爲任務和索引頁。check_box_tag不接受值

當我創建的新觀點新任務: (erledigt做了完整起見機構)

<%= f.check_box(:erledigt,{}, 1, 0) %> 

當我fireup 軌道ç

2.0.0-p247 :021 > Task.all.pluck(:erledigt) 
(0.2ms) SELECT `tasks`.`erledigt` FROM `tasks` 
=> [1, 1, 0, 0] 

我看到表格保存我的輸入。

問題:

在每一個任務被選中,爲什麼索引視圖? 任何人都可以解釋或提供任何建議嗎?

<% @tasks.each do |task| %> 
    <tr> 
    <td><%= check_box_tag(task.erledigt, 1, 0) %> </td> 
    <td><%= link_to task.aufgabe, task %></td> 
    <td><%= task.beschreibung %></td> 
    <td><%= task.prioriaet %></td> 
    <td><%= link_to 'zeigen', task %></td> 
    <td><%= link_to 'LÖSCHEN', task, method: :delete, data: { confirm: 'Sicher?' } %></td> 
    </tr> 
<% end %> 

基本上索引視圖顯示所有的複選框,每一個任務的任務已被選中,但它應檢查如果「erledigt」屬性是1 正如你可以看到有有幾個任務現在0

索引視圖:

[X] TASK1

[X] TASK2

[X] TASK3

[X] task4

如何索引視圖應該是:

[X] TASK1

[X] TASK2

[] TASK3

[] task4

回答

2

所有複選框都顯示爲勾選,因爲您要通過opt ion 0 as checked to check_box_tag and ruby​​ interprets 0 as a true value。

<td><%= check_box_tag(task.erledigt, 1, 0) %> </td> 

簡單地說,更新上述作爲

<td><%= check_box_tag("task_erledigt",task.erledigt, task.erledigt == 1 ? true: false) %> </td> 

因此,基於該複選框將顯示檢查的task.erledigt值還是未選中狀態。

+0

現在每項任務都未被選中...爲什麼? – Kei9Ahfu

+0

讓我們在聊天上進行調試http://chat.stackoverflow.com/rooms/48530/ror –

+2

問題是您正在測試'task.eledigt == 1'。它將是true或false(如果false不是默認值,則爲null),所以它永遠不會等於1.參數是(name,value,checked(bool)),所以你應該執行'check_box_tag(「task_erledigt」 ,「1」,task.erledigt)'。這是令人困惑的,我知道,你通過''1''的值而返回'true'。這只是關於如何將布爾值保存在數據庫中。 –