我正在设计一个问答式的Ruby on Rails应用程序。
用户登录后,您可以看到其他用户提出的问题列表。我在每个问题旁边都有一个指向/answers/new?question_id=someNumber的链接。它链接到一个页面,该页面在提交答案的标准表单上方显示问题(提醒“回答者”)。为了显示问题,我调用@question = Question.find_by_id(params[:question_id])并在Haml视图文件中引用@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,所以我不能重新显示用户回答的问题。我该如何解决这个问题呢?
有没有更好的方法来存储用户试图回答的问题,这样我就可以在表单上方显示它,以便输入新的答案(将来可能还会在其他视图中显示)?
如果您需要查看更多代码,请让我知道。
发布于 2010-05-02 18:59:56
嗯,@question的值不是一直都一样吗?你知道,它是控制器的成员字段,所以只要你不改变它,我想它应该保持不变。如果这不是真的,请考虑将问题id存储在会话中。
https://stackoverflow.com/questions/2753170
复制相似问题