【问题标题】:Getting the constant name of a controller from params[:controller]从 params[:controller] 获取控制器的常量名
【发布时间】:2019-02-23 11:08:58
【问题描述】:

我有

params[:controller] # => "posts/comments"

我想获取相关控制器的常量名:

Posts::CommentsController

我知道我可以做到:

"#{params[:controller].camelize}Controller".constantize # => Posts::CommentsController

我只是想问是否有专门的 Rails 方法可以做到这一点,如果有,那是什么方法?

【问题讨论】:

  • 你在哪里需要这个功能?在控制器、视图还是其他地方?
  • 在我们的控制器中使用self.class"#{controller_path.camelize}Controller".constantize
  • @Boris self.class 不会在视图中返回控制器名称,controller_path 不适合我的情况。看我的回答。

标签: ruby-on-rails methods controller ruby-on-rails-5 constants


【解决方案1】:

我最终使用了:

# path => "posts/comments"
recognized_path = Rails.application.routes.recognize_path(path)

"#{recognized_path[:controller].camelize}Controller".constantize 
# => Posts::CommentsController

如果有专门的 Rails 方法可以做到这一点,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多