2011-11-30 88 views
4

需要什麼基本設置來確保路由URL名稱助手工作?Rails路由URL名稱助手

比如在我的路線,我有以下:

Blog::Application.routes.draw do 
    resources :news, :as => :news_items, :controller => :news_items, :only => [:show, :index] 

    scope :module => "refinery" do 
    scope(:path => 'refinery', :as => 'admin', :module => 'Admin') do 
     resources :news, :except => :show, :as => :news_items, :controller => :news_items 
    end 
    end 
end 

但以下似乎不工作:

new_refinery_news_url 

我不斷收到錯誤

未定義的局部變量或方法`new_refinery_news_url'

所以我很確定在我配置我的應用程序的方式中缺少一些東西,誰的主要路由是在Gemfile中添加的RefineryCMS gem中。

有什麼想法?

回答

5

只好用main_app.new_refinery_news_url代替。

2

幫手名字將是new_admin_news_item_url

找到所有路線及其輔助方法很簡單。只要運行rake routes,你會看到:

  news_items GET /news(.:format)     {:action=>"index", :controller=>"news_items"} 
      news_item GET /news/:id(.:format)    {:action=>"show", :controller=>"news_items"} 
    admin_news_items GET /refinery/news(.:format)   {:action=>"index", :controller=>"refinery/Admin/news_items"} 
        POST /refinery/news(.:format)   {:action=>"create", :controller=>"refinery/Admin/news_items"} 
new_admin_news_item GET /refinery/news/new(.:format)  {:action=>"new", :controller=>"refinery/Admin/news_items"} 
edit_admin_news_item GET /refinery/news/:id/edit(.:format) {:action=>"edit", :controller=>"refinery/Admin/news_items"} 
    admin_news_item PUT /refinery/news/:id(.:format)  {:action=>"update", :controller=>"refinery/Admin/news_items"} 
        DELETE /refinery/news/:id(.:format)  {:action=>"destroy", :controller=>"refinery/Admin/news_items"} 
+0

這東西,所有路線的方法Rails的對象named_pa​​th '不工作。解決這個問題的唯一方法是直接使用'/煉油廠/新聞/新',例如 '<%= link_to t('。create'),'/ refinery/news/new',:class =>「add_icon 「%>' – mabounassif

1

對於可安裝的引擎,您總是需要指定「main_app」。 (或煉油廠路線「精煉廠」)前綴,因爲引擎與應用程序隔離。

0

一個解決方案,如果您使用的煉油廠的航線外,就是前綴包含從'耙路線命名路由

Rails.application.routes.url_helpers.new_admin_news_item_path