0

我有 3 个具有以下关联的模型。一个模型 Question 属于一个特定的用户并且有很多答案,一个 Answer 模型既属于一个用户又属于一个问题。因此,用户模型有许多问题和答案。我的答案模型具有字段 User_id 和 question_id ,它们标识答案发布到的问题的所有者以及创建或拥有该问题的人。那么如何将用户和问题 ID 分配给我的创建操作的答案,以及我的视图中用于发布答案的链接的结构是什么。另一个问题是,这是最好的方法吗?我的目标是在用户仪表板上显示用户的问题和答案,这样如果用户查看问题,他可以看到该问题的答案,反之亦然。

4

1 回答 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 回答