如何在rails中进行动态重定向?

时间:2013-10-08 16:14:58

标签: ruby-on-rails ruby-on-rails-3 routes

如何添加动态重定向?我在ApplicationControllerApplicationHelper中尝试了此操作但没有成功。

我想要这样的事情:

def dynamic_path
  if current_user.admin?
    admin_path
  else
    overview_path
  end
end

最佳做法是什么?

谢谢!

编辑:

哦,我忘了提到我想把它放到我的宝石中,它被两个不同的应用程序使用,两者都应该使用这个方法。我应该把它放在哪里?

2 个答案:

答案 0 :(得分:4)

尝试将其放在ApplicationController中,然后在应用程序控制器的顶部添加helper_method行,如下所示:

helper_method :dynamic_path

def dynamic_path
  redirect_to (current_user.admin? ? admin_path : overview_path)
end

helper_method行可以在所有视图和控制器中使用此方法。

答案 1 :(得分:1)

使用redirect_to

def dynamic_path
  redirect_to (current_user.admin? ? admin_path : overview_path)
end

更新:由于听起来您正试图将此辅助模块存储在外部gem中,因此您需要确保将模块作为ActionView帮助程序加载,这可以自动完成在宝石中使用Railtie。参见

  

How do I extract Rails view helpers into a gem?