在validates_presence_of之后保持用户数据持久

时间:2010-05-02 10:40:29

标签: ruby-on-rails haml

我正在设计一个问答Ruby on Rails应用程序。

用户登录后,您可以看到其他用户提出的问题列表。我在/answers/new?question_id=someNumber的每个问题旁边都有一个链接。这链接到一个页面,该页面显示问题(提醒“回答者”)以上提交答案的标准表格。为了显示问题,我在Haml视图文件中调用@question = Question.find_by_id(params[:question_id])并引用@question

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'

问题是如果我在Answer.rb中检查validates_presence_of :description,如果用户在页面重新加载时没有在question_id字段中输入任何内容,则会丢失description,所以我无法重新显示用户正在回答的问题。我该如何解决这个问题?

有没有更好的方法来存储用户试图回答的问题,以便我可以在表单上方显示它以输入新的答案(可能在将来的其他视图中)?

如果您需要查看更多代码,请告知我们。

1 个答案:

答案 0 :(得分:1)

嗯,不是@question的价值保持不变吗?你知道,它是控制器的成员字段,所以只要你不在那里改变它,我想它应该保持不变。如果不是这样,请考虑将问题ID存储在会话中。