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
这很棘手,因为使用复选框集合需要[].只需执行以下操作:
视图:
Run Code Online (Sandbox Code Playgroud)<% @books.each do |b| %> <%= check_box_tag "books[#{b.id}]", b.book %> <%= label_tag "books[#{b.id}]", b.book %> <br /> <% end %>
然后在控制器中通过它访问参数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)