Рельсы чекбокс область выбора - PullRequest
3 голосов
/ 29 декабря 2010

Прямо сейчас мои чекбоксы rails переключаются только при нажатии на чекбокс; ничего не происходит, если я нажимаю на текст, связанный с флажком. Есть ли способ заставить флажок переключаться, если вы также нажмете ТЕКСТ?

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

Ответы [ 2 ]

10 голосов
/ 29 декабря 2010

Это было сложно из-за [], которые необходимы для работы с коллекциями флажков. Просто сделайте следующее:

Вид:

<% @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, чтобы получить только Book1

Титулы [: книги] .values ​​

Или еще более простой способ - просто обернуть check_box_tag с помощью <label> примерно так:

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

Обратите внимание, что теперь вам даже не нужно беспокоиться об уникальном идентификаторе через #{b.id}, поэтому код контроллера может быть изменен на

params[:books]  # notice the .values is removed
4 голосов
/ 29 декабря 2010

Вам необходимо поместить текст в тег label , который указывает на идентификатор флажка.У Rails есть label helper для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...