выборочная проверка в рельсах - выберите 2 из 4 - PullRequest
0 голосов
/ 02 декабря 2011

Я знаю по API Rails, что есть способ создания пользовательских проверок, но я не могу понять, как это сделать.Я хочу, чтобы пользователь мог выбрать только 2 из 4 флажков ... Сделайте вид, что контроллер назван fav__controller, а таблица избранного имеет эти атрибуты

. Есть ли способ заставить их выбирать только 2 из 4?

<div class="field">
    <%= f.label(:sex, "Sex") %>
    <%= f.check_box(:sex) %> </br>
    </div>
    <div class="field">
    <%= f.label(:chocolate, "Chocolate") %>
    <%= f.check_box(:chocolate) %> </br>
    </div>
    <div class="field">
     <%= f.label(:computers, "Computers") %>
    <%= f.check_box(:computers) %> </br>
    </div>
    <div class="field">
    <%= f.label(:comicbooks, "Comic Books") %>
    <%= f.check_box(:comicbooks) %> </br>
    </div>

@ Оброк, как далеко я с этой функцией, используя before_save, я знаю, что это неправильно, но вы можете направить меня в правильном направлении.Как запустить функцию проверки при отправке формы?Я новичок (и вообще не очень умный: (* ​​1006 *

before_save :check_box_count

....
    def check_box_count
    @check_box_count = check_box(:sex) +  check_box(:chocolate) + check_box(:computers) + check_box(:comicbooks)
    unless @check_box_count == 2 return false

    end

1 Ответ

1 голос
/ 02 декабря 2011

Вы можете сделать это, просто написав метод, который подсчитывает, сколько флажков отмечено, и затем проверяет это.

Edit:

Мне кажется, что-то вроде этого.

validates_inclusion_of :check_box_count, :in => 2..2, :message => "Two checkboxes should be ticked"

...

private 
def check_box_count
  [sex, chocolate, computer, comicbooks].select{|x| x }.count
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...