2016-05-19 13 views
-1

私は質問をすることができ、多くの回答があるアプリを作成しようとしています。だから私はここで1対多数の関連付けを使用しました。 今私は質問回答と2つのコントローラ質問&答えの2つのモデルがあります。 私はshow.html.erbruby​​ on railsで1対多の関係で新しいレコードを作成する

<%= form_for @answer, :url => "answer", :method => 'post' do |f| %> 
    <%= f.hidden_field :question_id, :value => @question.id %> #this i am not sure about 
    <%= f.text_area :content %> 
    <%= f.submit "SUBMIT" %> 
<% end %> 

コントローラでshowメソッドは\ \質問でフォームを持っている:

def show 
    @question = Question.find(params[:id]) 
    @answers = @question.answers 
    @answer = Answer.new 
    end 

私も答えコントローラのメソッドを作成

post 'questions/show/answer' => "answers#create" 
へのルートを作成しました

問題は、question_idが文字列として渡されますが、現在の質問に関連付けるために整数として渡す必要があることです。 どうすればいいのですか、それ以外の方法がありますか?

答えて

0

コントローラのnewアクションを使用して、フォームの新しい回答オブジェクトをレンダリングし、createアクションで、回答する質問を見つけて回答を作成します。

def new 
    @answer = Answer.new 
end 

def create 
    @question = Question.find(params[:id]) 
    @question_created = @question.answers.create(answers_params).save 

    if @question_created 
    // do something or redirect somewhere 
    end 
end 

private 

def answers_params 
    params.require(:answer).permit(:content) 
end 

その後、あなたのルートでは、あなたが

resources :questions do 
    resources :answers 
end 

を必要とRESTfulなルートを作成するためのリソースを使用することができます(:各アクションは、インスタンスを除き、特定の要求される目的のために使用すべきであるので、同様あなたがショーアクションでフォームを取得するためにAJAX呼び出しをしたいとき)

+0

私は別のコントローラのビューで実行しているフォームを持っています。私のform_for(@answer)は質問コントローラのshow.html.erbビューにあります。これはあなたがちょうど私に与えたコードに影響しますか? –

+0

そうしてはいけません。上記で提供したコードを使用して、回答コントローラの作成アクションを使用して試してみてください。 – Fiyin

関連する問題