Rails复选框可选区域

时间:2010-12-29 11:14:58

标签: ruby-on-rails ruby ruby-on-rails-3

现在我的rails复选框只有在你点击复选框时才会切换;如果我单击与复选框关联的文本,则没有任何反应。如果单击“文本”,有没有办法让复选框切换?

<% @books.each do |b| %>
  <%= check_box_tag "books[]", b.book %><%= b.book %><br />
<% end %>

2 个答案:

答案 0 :(得分:10)

这很棘手,因为使用复选框集合需要[]。只需执行以下操作:

查看:

<% @books.each do |b| %>
  <%= check_box_tag "books[#{b.id}]", b.book %>
  <%= label_tag "books[#{b.id}]", b.book %>
  <br />
<% end %>

然后在控制器中通过它values访问参数。否则它看起来像135 =&gt; Book1。使用values获取Book1

  

PARAMS [:书籍] .values

或者更简单的方法就是简单地用check_box_tag包裹<label>,如下所示:

...
<label><%= check_box_tag "books[]", b.book %></label>
...

现在请注意,您甚至不需要担心#{b.id}的唯一ID,因此控制器代码可以更改回

params[:books]  # notice the .values is removed

答案 1 :(得分:4)

您需要将文本放在label tag中,该文本指向复选框的ID。 Rails有一个label帮助器。