2012-01-03 27 views
1

我對命名幫助程序有一個非常奇怪的問題。因此,讓我們開始與有問題的路線:嵌套資源(具有自定義控制器參數)指定的助手不能正確生成URL

resources :subjects, path: 'library' do 
    resources :modules, controller: 'subject_modules' 
    end 

Subjects#to_param回報self.slug。現在,一個名爲 「foo」 的主題和模塊ID爲1,當受試者是@subject和模塊m

  • link_to subject_modules_path(@subject, m)給/library/foo/modules.1
  • link_to edit_subject_module_path(@subject, m)給人/庫/富/模塊/ 1 /編輯
  • link_to m給人/庫/ 1 /模塊/物理

至於link_to [@subject, m],我得到:

路由錯誤

No route matches {:action=>"show", :controller=>"subject_modules", :subject_id=>#<Subject id: 2, name: "Foo", created_at: "2011-12-30 02:00:38", updated_at: "2011-12-30 02:00:38", slug: "foo">, :id=>#<SubjectModule ---snipped--->} 

有誰知道爲什麼路線被破壞成這個樣子,什麼我可能做解決這一問題?

編輯:

耙路線:

subject_modules GET /library/:subject_id/modules(.:format)   {:action=>"index", :controller=>"subject_modules"} 
        POST /library/:subject_id/modules(.:format)   {:action=>"create", :controller=>"subject_modules"} 
new_subject_module GET /library/:subject_id/modules/new(.:format)  {:action=>"new", :controller=>"subject_modules"} 
edit_subject_module GET /library/:subject_id/modules/:id/edit(.:format) {:action=>"edit", :controller=>"subject_modules"} 
    subject_module GET /library/:subject_id/modules/:id(.:format)  {:action=>"show", :controller=>"subject_modules"} 
        PUT /library/:subject_id/modules/:id(.:format)  {:action=>"update", :controller=>"subject_modules"} 
        DELETE /library/:subject_id/modules/:id(.:format)  {:action=>"destroy", :controller=>"subject_modules"} 

回答

0

目前Rails的路由系統似乎有一些怪癖。

使用subject_module_path(@subject, m)最初對我造成了「無法找到路由」錯誤(我在寫這個問題時嘗試過),但最終它以某種方式工作。

我不能指出這個問題,所以不幸我不知道它的原因。這個問題發生在Rails 3.1.3上。

+0

您可能重新啓動了使Rails合作的服務器。 – 2012-01-03 23:02:37

+0

@RyanBigg當Rails不在使用devmode的時候會自動重新生成東西,並檢測到文件中的變化? – unrelativity 2012-01-03 23:06:34

+0

它有一些怪癖,有時並沒有檢測到這些變化。沒有辦法知道這是否是問題。 – 2012-01-04 22:10:44

-1

您可以檢查是否使用 「回扣路線」,你的助手指向正確的網址是什麼?

+0

是的。 '[@subject,m]'不使用輔助方法,因此不適用於這種情況。 – unrelativity 2012-01-03 09:11:14