2012-12-21 67 views
0

我有一個看起來像一個自定義路由工作:url_for不與自定義路由

match 'firsttime' => 'registrations#new', :via => :get, \ 
    :defaults => {:promotion_path => :firsttime} 

上述路線的目標是能有像http://www.mysite.com/firsttime一個URL映射到「新」的方法對於註冊管理員而言,該註冊的促銷是「首次」促銷。

在我的車型之一,我有一個快捷的方法來嘗試並生成該網址:

class Registration < ActiveRecord::Base 
    include ActionView::Helpers 
    include ActionDispatch::Routing 
    include Rails.application.routes.url_helpers 

    belongs_to :promotion 

    def get_share_link() 
    promotion_path = promotion.url_path 

    url_to_share = url_for :controller => 'registrations', :action => 'new', :promotion_path => promotion_path 
    end 
end 

調用方法get_share_links()失敗,出現錯誤:

No route matches {:controller=>"registrations", :action=>"new", :promotion_path=>"firsttime"}

我是什麼做錯了,還是我甚至使用正確的方法呢?

回答

0

路由在控制器中使用。相反,將其作爲之前的過濾器粘貼在控制器中。

編輯#1

這是色器件或其他寶石的認證?

編輯#2

你能得到http://www.mysite.com/registrations/new?promotion=firsttime假定它是本地主機現在當然,因爲你是在開發模式。

問題#1

你是什麼意思是「以我的車型之一,我有一個快捷的方法來嘗試並生成該網址:」你這是生成此並在使用它?郵件?看起來你的路線起作用了,它只是在你想要的時候沒有被製造出來,而且你不知道它在哪裏被使用。

回答

它與作爲選件提供only_path: false工作?

+0

如果我將該代碼移動到控制器,則會發生同樣的事情。 –

+0

沒有認證 –

+0

沒有,得到沒有路由匹配[GET]「/ registrations/new」 - 我沒有爲此使用基於資源的路由。 –