2012-03-09 3 views
2

У меня есть код, который выглядит следующим образом:Может не в check_box_tag ПРЕДВАРИТЕЛЬНОЙ ПРОВЕРКИ рельсов

@all_ratings.each do |rating| 
    = check_box_tag "ratings[#{rating}]", session[:checkbox][rating], :id => "ratings_#{rating}" 
    ... 
= submit_tag 'Refresh', :id => "ratings_submit" 

Сохраняя состояние которого Флажки были щелкнули я надеялся, чтобы иметь возможность предварительной проверки коробки, которые были кликали после того, как запрос был и страница перезагружается. Проблема, с которой я сталкиваюсь, заключается в том, что приведенный выше код не работает. Я не уверен, что это потому, что у меня есть бит :id => "ratings_#{rating}" в конце (который требуется для этого назначения). Я проверил рельсы api here, но это было так ясно, как грязь. Заранее спасибо за помощь!

Приветствия

(Отказ от ответственности: Этот код для HW 2 для программного обеспечения Coursera в качестве курса службы - я закончил большую часть логики для HW, но этот последний бит за меня, и, кажется, больше от идиосинкратии, чем основная тема, поэтому я размещаю ее здесь.)

+0

Чтобы проверить флажки, вам нужно добавить логическое значение. Имеет ли рейтинг '= check_box_tag '[# {rating}]", session [: checkbox] [rating], true,: id => "ratings _ # {rating}" "проверить все флажки? – prasvin

+0

добавление 'true' делает предварительную проверку всех полей и добавление' false' делает их все непроверенными, но когда я помещаю в переменную, которая может принимать логическое значение, проверка поля не изменяется, как я ожидал – oort

+1

Что Булева переменная вы добавили? Учитывая, что у меня есть модель с оценками 'has_many', скажем, видео, и у вас есть' @ video', я бы сделал оценки 'check_box_tag '[# {rating}]", session [: checkbox] [rating], @video. ratings.include? (рейтинг),: id => "ratings _ # {rating}" '. Компонент '@ video.ratings.include? (Rating)' предсказывает рейтинги, связанные с текущим видео. Каковы ассоциации, связанные с вашей рейтинговой моделью? – prasvin

ответ

1

Какую булевскую переменную вы добавили? Учитывая я модель с has_many оценок, скажем, видео, и @video определены, я бы

= check_box_tag "ratings[#{rating}]", session[:checkbox][rating], @video.ratings.include?(rating), :id => "ratings_#{rating}". 

@video.ratings.include?(rating) часть prechecks рейтинги, связанные с текущим видео. Каковы ассоциации, связанные с вашей рейтинговой моделью?

+0

эй, я тоже застрял в одной и той же проблеме в течение 2 дней подряд, и я не вижу ничего в сессии. Я просто прочитал, что для сеансов нужна таблица для их работы? Все, что я получаю для сеанса, - «ноль». Как вы думаете? заранее спасибо. –

+0

Ну, честно говоря, для этого вам не нужно использовать сессионный хеш. Вы можете прочитать о хэше сеанса в другом месте. Часть сеанса выше check_box_tag служит для предоставления атрибута 'value' html-атрибута, как описано здесь http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag. Используйте эти две строки и связанные документы, чтобы посмотреть, что они делают - рейтинги [= check_box_tag] [средний] »,« средний »,« истинный »и« = check_box_tag »[хороший]», «хороший», «ложный». Если вы попали в ловушку, вы можете задать отдельный вопрос. – prasvin

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