Rails复选框可选区域

Lan*_*Lan 3 ruby ruby-on-rails ruby-on-rails-3

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

<% @books.each do |b| %>
  <%= check_box_tag "books[]", b.book %><%= b.book %><br />
<% end %>
Run Code Online (Sandbox Code Playgroud)

Lan*_*Lan 10

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

视图:

<% @books.each do |b| %>
  <%= check_box_tag "books[#{b.id}]", b.book %>
  <%= label_tag "books[#{b.id}]", b.book %>
  <br />
<% end %>
Run Code Online (Sandbox Code Playgroud)

然后在控制器中通过它访问参数values.否则它看起来像135 => Book1.使用values得到的只是第一册

PARAMS [:书籍] .values

或者更简单的方法是简单地包裹check_box_tag<label>,像这样:

...
<label><%= check_box_tag "books[]", b.book %></label>
...
Run Code Online (Sandbox Code Playgroud)

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

params[:books]  # notice the .values is removed
Run Code Online (Sandbox Code Playgroud)