Ruby on rails Rails为具有嵌套资源的循环形成_
我有三个资源:工作、问题和答案。Ruby on rails Rails为具有嵌套资源的循环形成_,ruby-on-rails,loops,form-for,nested-resources,Ruby On Rails,Loops,Form For,Nested Resources,我有三个资源:工作、问题和答案。 这些关系是:工作有很多问题;这个问题有很多答案 我在Jobs表单视图中创建了一个嵌套表单, 其中包括创造就业机会和提出问题。这两个都将在管理墙后面,但我希望用户通过答案表单视图上的表单(而不是墙后面)回答问题 我面临的问题是,我想为答案表单字段创建一个循环 因为这是一个循环,并且将有多个答案字段,所以我希望问题动态呈现为答案表单标签。这将反映路径,因此jobs/1/questions/1/answers/new(编辑:这应该是jobs/1/answers/new
这些关系是:工作有很多问题;这个问题有很多答案 我在Jobs表单视图中创建了一个嵌套表单, 其中包括创造就业机会和提出问题。这两个都将在管理墙后面,但我希望用户通过答案表单视图上的表单(而不是墙后面)回答问题 我面临的问题是,我想为答案表单字段创建一个循环
因为这是一个循环,并且将有多个答案字段,所以我希望问题动态呈现为答案表单标签。这将反映路径,因此jobs/1/questions/1/answers/new(编辑:这应该是
jobs/1/answers/new
)将显示job\u id
为1的所有问题
我该怎么做呢?我正在考虑在“答案”控制器中使用这样的新操作(我肯定这是非常错误的):
这是我目前的答案表:
<%= form_for(@answer, :url => job_question_answers_path(@job, @question)) do |f| %>
<% f.fields_for :answers do |builder| %>
<%= builder.label @question.question %>
<%= builder.text_area :answer, :rows => 10 %>
<% end %>
<%= f.submit "Create" %>
<% end %>
job_-question_-answers_-path(@job,@question))do | f |%>
10 %>
如果您需要更多信息,请告诉我,谢谢您的帮助 所以我想出了如何让它工作,我用railscasts的插曲做到了这一点: 我一开始就知道这个补丁,但我没有使用它,因为我的应用程序的功能是允许管理员创建作业和问题(在墙后面),然后让用户回答相应的问题。我想如果我将答案表单嵌套在job and questions表单下,我将无法创建此管理/用户功能(这是我的下一个专长) 我基本上只是将答案表单嵌套在工作/新操作的问题表单下。 看起来是这样的:
<%= form_for(@job) do |f| %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.fields_for :questions do |builder| %>
<%= render 'question_fields', :f => builder %>
<% end %>
<%= f.submit %>
<% end %>
最后,我在模型中的关联需要包括
接受\u嵌套的\u属性\u
像这样:
模型
class Job < ActiveRecord::Base
has_many :questions
has_many :answers
accepts_nested_attributes_for :questions, :allow_destroy => true
accepts_nested_attributes_for :answers, :allow_destroy => true
end
class Question < ActiveRecord::Base
belongs_to :job
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :job
belongs_to :question
end
类作业true
接受\u嵌套的\u属性\u for:answers,:allow\u destroy=>true
结束
类问题
此解决方案正在保存我的答案,但现在我需要在另一个视图中使用该部分来实现我尝试的管理/用户操作功能
如果你有任何问题,请告诉我 jobs/1/questions/1/answers/new看起来就像是在为一份工作中的一个问题创建一个答案。或者你在创建答案时试图显示所有问题?啊,你是对的,我在创建答案时试图显示该工作的所有问题。所以应该是/jobs/1/questions/answers/new,或者更确切地说是jobs/1/answers/new?
<%= f.label :question, "Question" %>
<%= f.text_area :question, :rows => 10 %>
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Question" %>
<%= f.fields_for :answers do |builder| %>
<%= render 'partials/answer_fields', :f => builder %>
<% end %>
<%= f.label "Answer" %>
<%= f.text_area :answer, :rows => 10 %>
<%= f.hidden_field :question_id, :value => @question %>
<%= f.hidden_field :job_id, :value => @job.id %>
def new
@job = Job.new
10.times do
question = @job.questions.build
1.times { question.answers.build }
end
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @job }
end
end
class Job < ActiveRecord::Base
has_many :questions
has_many :answers
accepts_nested_attributes_for :questions, :allow_destroy => true
accepts_nested_attributes_for :answers, :allow_destroy => true
end
class Question < ActiveRecord::Base
belongs_to :job
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :job
belongs_to :question
end