在ruby on rails上创建一对多关系的新记录

时间:2016-05-19 14:25:06

标签: ruby-on-rails ruby activerecord associations

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

中有一个表单
  def show
    @question = Question.find(params[:id])
    @answers = @question.answers
    @answer = Answer.new
  end

控制器中的show方法是:

post 'questions/show/answer' => "answers#create"

我还创建了一个路径来回答控制器的创建方法

Node.hpp
---------------------
#ifndef Node_hpp
#define Node_hpp

#include <stdio.h>
#include "ToDo.hpp"

class Node{
public:
    Node *next;
    ToDo *element;
    Node(ToDo *element, Node * next);

};


#endif /* Node_hpp */

 Node.cpp
---------------------
#include "Node.hpp"
#include "ToDo.hpp"


Node::Node(ToDo *element, Node * next):
next(next), element(element)
{}

ToDo.hpp
-------------------------
#ifndef ToDo_hpp
#define ToDo_hpp

#include <iostream>
using namespace std;


enum class Importanza{
   BASSA,MEDIA,ALTA
 };


class  ToDo{

public:
    ToDo(string titolo = "Titolo", string descrizione = "Descrizione",                     Importanza importanza = Importanza::BASSA);
    ToDo(ToDo* e);

string titolo() const; // dichiara che il metodo non modifica l'oggetto!!
void titolo(const string& v);
string descrizione() const;
void descrizione(const string& v);
Importanza importanza() const;
void show(int) ;
ostream& operator <<(ostream& o); //non vuole TODO xkè è implicito


private:
string m_titolo;
string m_descrizione;
Importanza m_importanza;




 };


 #endif /* ToDo_hpp */

现在的问题是question_id是作为字符串传递的,但我希望它作为整数传递,以便我可以将它与当前的Question相关联。 我该怎么做,或者还有其他方法可以做到。

1 个答案:

答案 0 :(得分: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

然后在您的路线中,您可以使用资源来创建所需的RESTful路线

resources :questions do
  resources :answers
end

注意:每个操作都应该用于特定的目的,除非您想要进行AJAX调用以在show动作中获取表单)