我正在使用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
感谢您的关注。
答案 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
更新