2013-01-24 109 views
0

我是紅寶石新手。紅寶石定製路線

這裏是我的routes.rb

RpxNowExample::Application.routes.draw do 

    root :to => "users#index" 
    resources :users 
end 

通常我的功能工作正常,但我希望做一個好辦法。我希望它重定向到另一個視圖「promptemail」使用相同的控制器調用另一個動作,如果條件爲真,即

if(@provider == "Twitter") 

    redirect_to :action => :promptemail 

end 

應該帶我到那個promptemail視圖。

回答

0

你可以傳遞一個塊到你的資源定義添加額外的行動超出標準:

resources :users do 
    match :promptemail, :via => [:get], :on => :member 
end 

:via選項允許你在GET,POST限制,放等,在:on參數將採取兩種:成員,或:收藏。

:collection將對一個集合進行操作,因此與索引操作類似,:member將對單個記錄進行操作。因此,如果您將路線指定爲:on => :member,則在生成路線時需要提供一個對象或ID。

有關添加路由資源更多信息可以在這裏找到:http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

+0

它彈出**沒有路由匹配{:action =>「promptemail」,:controller =>「users」} ** – faddee

+0

在這種情況下,將':on =>:member'更改爲':on =>:收集' –

+0

** Perfectoooo **這就是我想要它像 – faddee

0

使用相同的控制器調用另一個動作 -

嘗試:

的routes.rb:

RpxNowExample::Application.routes.draw do 

    root :to => "users#index" 
    resources :users do 
    collection do 
     get 'promptemail' 
     end 

您的控制器:

if(@provider == "Twitter") 

    redirect_to :promptemail 

end 

注: - 無需調用actionredirect_to爲您調用相同的控制器內的行動。