2017-11-25 123 views
0

我是RoR的初学者。我必须开发一个轮询发生器,所以我用'rails generate scaffold'命令创建了三个模型应用'Formulaire''Question'和'Reponse'。我无法创建我的表单来在同一视图中生成我的投票,我想我已经在我的公式/ _form中提交了我的问题/ _form,但它不起作用。我试图在我的form_for(@formulaire)中创建一个form_for(@formulaire)我的视图formulaires/_form连接视图和模型/ Ruby-RoR

那么,如何连接我的三个模型并在同一视图中创建三个实体?

谢谢

+0

请详细说明_“它不工作”_。你尝试了什么?你有什么问题?有没有错误信息?请显示你的代码。 – spickermann

+0

问题是我必须创建带有问题和解答的表单。我能够在我的数据库和问题中创建表单,但我不知道如何将每个表单连接到几个问题。例如我用我的新方法在我的配方控制器中将用户连接到我的Formulaire控制器中的“Form @ Formulaire = current_user.formulaires.new”。 – user9007028

回答

0

在Ruby on Rails的,提供给视图(@something)类变量,在控制器的动作设定。所以说你有一个UsersController,有一个index行动。这通常会定义@users = User.all

在视图app/views/users/index.html.erb中,您可以管理@users,或者在表格中显示这些信息。

你的问题听起来像是脚手架为每个脚手架都创建了一个控制器,但是你想在同一视图中管理它们吗?在这里你必须编辑控制器,通过初始化模型来找到这些模型。 @question = Question.newform_for(@question)

我建议您阅读http://edgeguides.rubyonrails.org/getting_started.html第5章和第6章,以便对模型,表格和控制器有基本的了解。

编辑:

根据您在下面的回答,我认为你应该使用.questions.build而不是。新。由于.questions将返回一个ActiveRecord::Collection据我记得,你会打电话给new这个。通过has_many关系创建新记录的适当方法是.build。请参阅以下链接:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many

+0

谢谢你的帮助,它帮助了我,但我还没有找到解决方案 – user9007028

+0

谢谢Frederik! – user9007028

0

在这种情况下,你可以不喜欢创建主模式叫Formulaire,那么问题的模型,并回答模型和评论模型...

一个Formulaire将有许多问题(has_many)和一个问题会有一个或多个答案(has_one或has_many)。

通过Rails,控制器,视图和模型需要一起操作。这意味着如果你想添加(或编辑)一个问题,那么简单的事情就是像apps/views/questions/_edit.html.erb。

你也可以做嵌套参数。

def formulaire_params 
    params.require(:formulaire).permit(
     : name, 
     : subject, 
     : instructions, 
     { questions: [:id, :description, :_destroy] }, 
     ... 
    ) 
end 

为了显示“formulaire”,通过你已经添加了mas_many和HAS_ONE关系(以及适当的范围界定和授权),你会很容易能够像做

<% @formulaire.questions.each do |question| %> 
    <span class=""><%= question.description %></span> 
    <% question.answers.each do |answer| %> 
    <span class=""><%= answer.owner.name %></span> 
    <span class=""><%= answer.description %></span> 
    <% end %> 
... 
<% end %> 
+0

谢谢米歇尔的回答。我做了你解释的,但我有一个错误:在我的应用程序/ views/questions/_form.html.erb类 问题#新 未定义的方法问题为零:NilClass – user9007028

+0

你可以发布你的控制器公式和问题? –

0

我的 'formulaire控制器'

def new 
@formulaire = current_user.formulaires.new 
end 

我的观点formulaire/_form

<%= form_for (@formulaire), html: {:multipart => true} do |f| %> 

我的问题控制器

def new 
@question = current_user.questions.new 
end 

我的观点的问题/ _form

<%= form_for(@question) do |f| %> 

我“的form_for([@ formulaire,@ formulaire.questions.new])做尝试| F | %> 但我有一个NoMethodError的问题#新

Ty。

+0

我更新了我的答案以适应新的信息。这应该工作。 –