Ruby on rails 如何在rails中实现动态重定向?
如何添加动态重定向?我在Ruby on rails 如何在rails中实现动态重定向?,ruby-on-rails,ruby-on-rails-3,routes,Ruby On Rails,Ruby On Rails 3,Routes,如何添加动态重定向?我在ApplicationController和ApplicationHelper中尝试了它,但没有成功 我想要这样的东西: def dynamic_path if current_user.admin? admin_path else overview_path end end 这方面的最佳做法是什么 谢谢 编辑: 哦,我忘了提到我想把它放进我的gem中,这是由两个不同的应用程序使用的,它们都应该使用这种方法。具体应该放在哪里?使用: 更新:由
ApplicationController
和ApplicationHelper
中尝试了它,但没有成功
我想要这样的东西:
def dynamic_path
if current_user.admin?
admin_path
else
overview_path
end
end
这方面的最佳做法是什么
谢谢
编辑:
哦,我忘了提到我想把它放进我的gem中,这是由两个不同的应用程序使用的,它们都应该使用这种方法。具体应该放在哪里?使用:
更新:由于听起来您试图将此帮助程序模块存储在外部gem中,因此您需要确保将模块作为ActionView帮助程序加载,这可以通过在gem中使用来自动完成。看
尝试将其放入
ApplicationController
中,然后在应用程序控制器顶部添加helper\u方法
行,如下所示:
helper_method :dynamic_path
def dynamic_path
redirect_to (current_user.admin? ? admin_path : overview_path)
end
helper\u方法
行使此方法在所有视图和控制器中都可用。我将其添加到gem的ApplicationController
,但不起作用。知道为什么吗?@Cojones你在做什么宝石?我相信只有引擎风格的gems才有应用程序控制器。Stuart M提出的制作Railtie的解决方案比制作一个完整的引擎要好,如果你只需要共享这个一个助手的方法。gem已经存在并且有一个完整的引擎,它有很多功能,而且由于使用gem的两个应用程序都需要这个动态路径,我想我最好也在gem中使用它?我仍在努力使Railtie正常工作。同样的,在gem的应用程序控制器
中似乎找不到。您是否正确地在应用程序控制器
中包含来自gem的帮助器模块?有关自动将Gem中的帮助器模块包含到标准ActionView帮助器集中的说明,请参阅更新的我的答案,其中提到tooI一直在玩弄这个问题,甚至以1:1的比例复制了它,只是更改了名称,但它仍然不起作用:/Users/pbartels/Sites/e_core/lib/e_core/railtie.rb:4:in'block-in':未初始化常量ECore::railtie::routehelp(NameError)
您能否编辑您的帖子以包含相关的铁路代码?听起来像是加载/需要文件的问题
helper_method :dynamic_path
def dynamic_path
redirect_to (current_user.admin? ? admin_path : overview_path)
end