我正在尝试创建一个应用程序,我们可以在其中提出问题并且问题有很多答案。所以我在这里使用了一对多关联。 现在我有两个模型问答和两个控制器问题&答案。 我在\ 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相关联。 我该怎么做,或者还有其他方法可以做到。
答案 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动作中获取表单)