我經歷了大量的form_for嵌套資源問題,無法獲得任何解決方案爲我工作。我想它是時候提出一個個性化的問題。嵌套資源的形式
我有兩個模型,工作和問題,工作has_many問題和questions_to_ jobs。
我用腳手架來創建控制器和模型,然後將這些資源嵌套在routes.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
現在我試圖訪問「/職位/ 1 /問題/新」和不斷收到在問題#新的
NoMethodError
我開始與錯誤沒有路由匹配{:控制器=>「問題」}當代碼爲
<%= 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的克隆https://gist.github.com/1032734
任何幫助表示讚賞,讓我知道,如果你需要更多的信息,謝謝。
第一選項工作,謝謝! - 什麼傳遞的網址可以解決這個問題?此外,問題的job_id不在數據庫中更新 - 任何想法如何解決這個問題?僅供參考:編輯返回此錯誤:沒有路由匹配{:controller =>「questions」} – Igrabes
當您不通過':url'選項時,Rails會嘗試自行解決它。它不知道'Question'總是'Job'的子資源,因爲它並不總是必須的。關於'job_id'沒有被更新,如果你正在使用批量分配,它可能會忽略它。分別調用'question.job = new_job'。雖然我看不到你的代碼。 – d11wtq
嘿@ d11wtq,我不完全確定你的意思是通過調用question.job = new_job - 那裏去?這是我的回購[鏈接(https://github.com/igrabes/InterQ),如果有幫助。 – Igrabes