2014-11-27 4 views
0

Я пытаюсь условно пометить check_box_tag как отмечено в зависимости от переменной экземпляра @ratings_filter, которая поступает с сервера. Я не могу использовать Javascript, поэтому то, что я делаю на контроллере, заключается в создании экземпляра @ratings_filter, устанавливающего его равным сеансу [: рейтинги]. Затем в представлении я рассказываю функции check_box_tag, чтобы установить это поле как отмеченное либо, если @ratings_filter равно nil (по умолчанию он должен отображать все), или если его значение в хеш истинно (что означает, что он был помечен пользователем, ergo должно отображаться)Ruby on Rails - условная проверка check_box_tag

= form_tag movies_path, :id => :ratings_form, :method => :get do 
    Include: 
    - @all_ratings.each do |rating| 
    = rating 
    = check_box_tag "ratings[#{rating}]", (@ratings_filter.nil? or @ratings_filter[rating] == true ? true : false) , :id => "ratings_#{rating}" 
    = submit_tag 'Refresh', :id => 'ratings_submit' 

Этот подход не работает, и я не могу найти проблему. Любая помощь будет действительно оценена. Благодарю.

+0

': идентификатор =>: рейтинги _ # {Рейтинг}' это даст вам только ': символ ratings_' –

+0

Заменены но та же проблема: = check_box_tag«рейтинги [# {рейтинг }] ", (@ ratings_filter.nil? или @ratings_filter [rating] == true? true: false),: id =>" ratings _ # {rating} " – FranGoitia

ответ

1

Пожалуйста, обратите внимание, что код: :id => :ratings_#{rating} даст вам только :ratings_ символ, то есть в код, который вы будете иметь: id="ratings_", пожалуйста, исправить код :id => :"ratings_#{rating}"

Далее, в соответствии с documentation, метод #check_box_tag Helper в принимает проверенное состояние свойства через третий аргумент, а не второй, а второй (обязательный) аргумент - это значение, которое будет передано серверу с запросом. Таким образом, код будет:

check_box_tag "ratings[#{rating}]", "1", @ratings_filter.try(:fetch, rating) != false , :id => :"ratings_#{rating}" 
+0

Большое спасибо. Я думал, что этот второй аргумент был необязательным. – FranGoitia

+0

@StringerBell второй аргумент будет передан серверу по запросу –

+0

@StringerBell, и все неравномерные аргументы (которые начинаются с начала) являются обязательными –

Смежные вопросы