我有 3 个具有以下关联的模型。一个模型 Question 属于一个特定的用户并且有很多答案,一个 Answer 模型既属于一个用户又属于一个问题。因此,用户模型有许多问题和答案。我的答案模型具有字段 User_id 和 question_id ,它们标识答案发布到的问题的所有者以及创建或拥有该问题的人。那么如何将用户和问题 ID 分配给我的创建操作的答案,以及我的视图中用于发布答案的链接的结构是什么。另一个问题是,这是最好的方法吗?我的目标是在用户仪表板上显示用户的问题和答案,这样如果用户查看问题,他可以看到该问题的答案,反之亦然。
问问题
286 次
1 回答
0
简短的回答:
Answer.create(params[:answer].merge(:question_id => @question.id, :user_id => @user.id)
或者
@question.asnwers.create(params[:answer].merge(:user_id => @user.id)
或者
@user.answers.create(params[:answer].merge(:question_id => @question.id)
长答案,我假设您可以获得登录用户,并且您将路由定义为:
map.resources :questions, :has_many => [:answers]
所以你的路线就像:example.com/questions/:question_id/answers。然后你在控制器中做@question = Question.find(params[:question_id])
我不明白您发布新答案的链接结构是什么意思。首先,您需要一个指向 new 的链接,例如 link_to('New answer', new_question_answer_path(@question))。
然后,在控制器中:
def new
@question = Question.find(params[:question_id])
@answer = Answer.new
end
在新视图中:
<% form_for :answer, [@question, @answer] do |f| %>
Your form stuff
<% end %>
然后你会有创建动作......我没有尝试过这段代码,但你明白了,对吧?
于 2010-09-21T21:37:32.890 回答