check_box_tag不接受值

时间:2014-05-01 14:22:51

标签: ruby-on-rails ruby-on-rails-4

我有一个简单的待办事项应用,其中有一个新页面,其中包含模型任务的表单和索引页。

当我在新视图中创建新任务时: (erledigt意味着为了完整而完成)

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

当我启动 rails c

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

基本上,索引视图显示了带有复选框的所有任务,并且每个任务都已经过检查,但是应该检查是否有错误#34;&#34; erledigt&#34;属性为1。 正如您所看到的,有一些任务为0。

立即查看索引:

[x] task1

[x] task2

[x] task3

[x] task4

索引视图应该如何:

[x] task1

[x] task2

[] task3

[] task4

1 个答案:

答案 0 :(得分:2)

所有复选框都显示为已选中,因为您将0选项checked传递给 check_box_tag ,并将ruby解释为0 true值。

<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的值,复选框将显示已选中或未选中状态。