Сохранение пользовательских данных постоянными после validates_presence_of - PullRequest
1 голос
/ 02 мая 2010

Я разрабатываю приложение Ruby on Rails с вопросами и ответами.

После входа в систему вы можете увидеть список вопросов, заданных другими пользователями. У меня есть ссылка рядом с каждым из вопросов на /answers/new?question_id=someNumber. Это ссылка на страницу, на которой отображается вопрос (чтобы напомнить «ответчику») над стандартной формой для отправки вашего ответа. Чтобы отобразить вопрос, я вызываю @question = Question.find_by_id(params[:question_id]) и ссылку @question в файле представления Haml:

Question details
%h2
  #{h @question.title}
#{h @question.description}
%br/
%br/
%h1
  Your answer
- form_for(@answer) do |f|
  = f.error_messages
  %p
    = f.label :description, "Enter your response here"
    %br
    = f.text_area :description
    = f.hidden_field "question", :value => @question.id
  %p
    = f.submit 'Answer'

Проблема в том, что если я проверяю validates_presence_of :description в Answer.rb, то я теряю question_id, если пользователь не вводил ничего в поле description при перезагрузке страницы, поэтому я не могу повторно отобразить вопрос, на который отвечает пользователь. Как мне это исправить?

Есть ли лучший способ сохранить вопрос, на который пользователь пытается ответить, чтобы я мог отобразить его над формой для ввода нового ответа (и, возможно, в других представлениях в будущем)?

Если вам нужно увидеть больше кода, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 02 мая 2010

Хм, а значение @question не остается прежним? Вы знаете, это поле элемента контроллера, поэтому, если вы не измените его там, я думаю, оно должно остаться прежним. Если это не так, рассмотрите возможность сохранения идентификатора вопроса в сеансе.

...