2016-05-19 31 views
-1

我正在尝试创建一个应用程序,我们可以在其中提问并且问题有很多答案。所以我在这里使用了一对多的关联。 现在我有两个模型问题答案和两个控制器问题&答案。 我在\问题形式\ show.html.erb在轨道上的ruby中创建一对多关系的新记录

<%= 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 %> 

在控制器的显示方法是:

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 

然后在你的路线,你可以利用的资源来创造必要REST风格的路线

resources :questions do 
    resources :answers 
end 

注意:每个动作要用于特定要求的目的,除了在实例当你想让AJAX调用来获得表演动作中的表格)

+0

我的窗体在另一个控制器的视图中运行,即;我的form_for(@answer)在问题控制器的show.html.erb视图中..这是否会影响您刚刚给我的代码 –

+0

它不应该。尝试使用上面提供的代码在Answers控制器中使用create action。 – Fiyin

相关问题