嵌套资源的形式

| 我已经解决了很多有关嵌套资源的form_for问题,但是找不到任何适合我的解决方案。我认为是时候问一个个性化的问题了。 我有两个模型,乔布斯和问题,乔布斯has_many_and许多问题和问题归属于Jobs。 我使用脚手架来创建控制器和模型,然后将资源嵌套在route.rb中。
root :to => \"pages#home\"

resources :jobs do
   resources :questions
end

get \"pages/home\"
get \"pages/about\"
get \"pages/contact\"


class Job < ActiveRecord::Base
   has_many :questions
end

class Question < ActiveRecord::Base
   belongs_to :job
end
现在,我正在尝试访问\'/ jobs / 1 / questions / new \'并继续获取 问题#new中的NoMethodError 当代码为时,我从错误“没有路由匹配{:controller => \“ questions \”}”开始
<%= form_for(@question) do |f| %>
我知道这是错误的,因此我开始尝试其他连击,但没有一个起作用。 我试过了
 <%= form_for([@job.questions.build ]) do |f| %>
 <%= form_for([@job, @job.questions.build ]) do |f| %>
<%= form_for(@job, @question) do |f| %>
在许多其他组合中,这是行不通的。 这是我的耙路的链接:git clone https://gist.github.com/1032734 感谢您的帮助,如果需要更多信息,请告诉我,谢谢。     
已邀请:
        我只是通过URL作为附加选项:
<%= form_for(@question, :url => job_questions_path(@job)) do %>
编辑: 还可以尝试:
form_for([@job, @question])
    
        这就是我解决我的问题的方法:) 在你的
questions/_form.html.erb
<%= form_for [@job, @question] do %>
为此,您需要作业的ID。您将按照以下方式通过它: 在the9ѭ
def new
  @job = Job.find(params[job_id])
  @question = @job.questions.build
end
Build(
.build
)与上面的代码中使用new(
.new
)相似,仅在旧版本的rails中有所不同;将2滑下。 现在进行创建操作(仍在
questions_controller.rb
中)
def create
  @job = Job.find(params[:job_id])
  @question = @job.questions.build(question_params)
end
如果仅使用这些,则问题模型中的job_id和user_id字段将为空。要添加ID,请执行以下操作: 在您的
questions_controller.rb
中,将job_id添加到job_params中,如下所示:
def question_params
  params.require(:question).permit(:ahaa, :ohoo, :job_id)
end
然后,要传递用户的ID(如果使用的是Devise),请执行以下操作:
def create
  @job = Job.find(params[:job_id])
  @question = @job.questions.build(question_params)
  @question.user_id = current_user.id
end
    

要回复问题请先登录注册