如何在rails 5中的rails管理仪表板操作中添加帮助器

时间:2016-10-26 17:31:21

标签: ruby-on-rails ruby ruby-on-rails-5 rails-admin

我正在使用Rails Admin gem https://github.com/sferik/rails_admin,我正在升级到它的最新版本。

在旧版本的rails admin(0.6.5)和rails(4.1.0)中,加载了helper类,所有工作正常。升级到rails 5并将rails admin升级到master分支后,帮助程序不再起作用。我在视图中调用operator_name并返回此参数 NoMethodError - undefined method 'operator_name' for #<<Class:0x007febe6d22510>:0x007febd334fb90>

我在rails admin wiki中搜索但没有找到,有人知道为什么会这样?

上面的仪表板操作类和帮助程序模块:

仪表板操作类

# my_project/lib/rails_admin/config/actions/callcenter_stats.rb

module RailsAdmin
  module Config
    module Actions
      class CallcenterStats < Dashboard

        register_instance_option :authorization_key do
          :callcenter_stats
        end

        register_instance_option :route_fragment do
          'callcenter_stats'
        end

        register_instance_option :http_methods do
          [:get,:post]
        end

        register_instance_option :link_icon do
          'icon-calendar'
        end

        register_instance_option :controller do
          Proc.new do
            # code ...
          end
        end
      end
    end
  end
end

辅助

# my_project/app/helper/rails_admin/callcenter_stats_helper.rb

module RailsAdmin
  module CallcenterStatsHelper

    def operator_name email
      email[/(.*?)@.*/,1].split('.').map(&:capitalize).join("<br/>").html_safe
    end

  end
end

感谢您的关注。

2 个答案:

答案 0 :(得分:2)

试试

这似乎是最重要的部分;)

  

here

所述更改config.parent_controller

如果仍然无效

这就是我所做的。

在更新rails_admin,降级,重新安装,键入bin/spring stop,按照here更改config.parent_controller之后尝试一段时间后,我决定修改其中一个我需要帮助的自定义操作(我在自定义操作中添加了helper TableHelper)。

我无法解释为什么,它在我想要的页面上不起作用,但是在另一个动作上工作,其中调用完全相同的帮助器...

出现了另一个错误,其中没有找到Kaminari的观点。所以我不得不将分页从app/views/kaminari移到app/views/kaminari/

另一台服务器重启,它随处可见......所以我删除了自定义操作中添加的代码。

解释不是很清楚,但也许它可以帮助别人! :)

答案 1 :(得分:0)

OMG!一年后,我找到了解决方案。 问题是在Rails 5上加载助手的新方法。 阅读RubyOnRails Docs

  

在以前版本的Rails中,控制器将包含一个与控制器名称匹配的帮助程序,例如,MyController将自动包含MyHelper。要返回旧行为,请将config.action_controller.include_all_helpers设置为false。

我使用

创建my_app/app/helpers/rails_admin/custom_helper.rb
module RailsAdmin::CustomHelper
  include RailsAdmin::CallcenterStatsHelper
  include RailsAdmin::CustomerContactsHelper
  include RailsAdmin::DiscountCouponHelper
  include RailsAdmin::SharedUrlsHelper
  include RailsAdmin::FormHelper
end

并加入my_app/config/initializers/rails_admin_main_controller.rb

module RailsAdmin::MainController.class_eval do
  include RailsAdmin::CustomHelper
end

并且工作正常; D. 这不是Rails管理员问题,只是从rails

更新