红宝石定制路线

时间:2013-01-24 08:54:10

标签: ruby-on-rails ruby routes

我是ruby on rails的新手。

这是我的路线.rb

RpxNowExample::Application.routes.draw do

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

通常我的功能正常,但我想做一个调整。我希望它重定向到另一个视图“promptemail”使用相同的控制器调用另一个动作,如果条件为真,即

if(@provider == "Twitter")

     redirect_to :action => :promptemail

end

我应该转到promptemail视图。

2 个答案:

答案 0 :(得分:0)

您可以将块传递给资源定义,以在标准之外添加额外的操作:

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

:via选项允许您限制get,post,put等,:on参数将采用:member或:collection。

:collection将对集合进行操作,因此与索引操作类似,:member将对单​​个记录进行操作。因此,如果您将路线指定为:on => :member,则需要在生成路线时提供对象或ID。

有关向资源添加路线的更多信息,请访问:http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

答案 1 :(得分: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

注意: - 当您在同一控制器中调用操作时,无需在action中调用redirect_to