私は以下の関連を持つ3つのモデルを持っています。モデルQuestionは特定のユーザーに属し、多くの回答があります。Answerモデルはユーザーと質問の両方に属します。したがって、ユーザーモデルには多くの質問と回答があります。私の回答モデルには、回答が投稿された質問の所有者と、その質問を作成または所有したユーザーを識別するフィールドUser_idとquestion_idがあります。では、作成アクションの回答にユーザーIDと質問IDを割り当てるにはどうすればよいですか。また、回答を投稿するためのビューのリンクの構造はどのようになっていますか。もう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])
新しい回答を投稿するためのリンクの構造が何を意味するのかわかりません。まず、link_to('New answer'、new_question_answer_path(@question))のようなnewへのリンクが必要です。
次に、コントローラーで:
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 に答える