我是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
视图。
答案 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
。