ユーザー権限に基づいてメイン ヘッダー ナビゲーションをレンダリングするように、activeadmin をカスタマイズしました。AdminUser に役割を与え、役割が「スーパー」の場合、上部のナビゲーションが表示されます。最近、ruby 1.9.3 と rails 3.2.8 にアップグレードしましたが、アクティブな管理ページに移動しようとすると、次のエラーが表示されます。
NoMethodError in Admin/dashboard#index
Showing /Users/mwallace/.rvm/gems/ruby-1.9.3-p194/bundler/gems/active_admin-3d6976ccf8a4/app/views/active_admin/dashboard/index.html.arb where line #1 raised:
undefined method `<<' for nil:NilClass
Extracted source (around line #1):
1: insert_tag view_factory.dashboard_page
Rails.root: /Users/mwallace/Development/dev/driftlab/driftlab/driftstack
Application Trace | Framework Trace | Full Trace
app/admin/views/header_renderer.rb:13:in `add'
これが私の app/admin/views/header_renderer.rb ファイルの内容です。remove および add アクションをコメントアウトするとエラーは修正されますが、そのコードをコメントアウトすると to_html アクションのロジックが機能しなくなります。
module ActiveAdmin
class Menu
# def remove(name)
# item = self[name]
# return if item.nil?
# @items.delete(item)
# end
# def add(*args, &block)
# mitem = MenuItem.new(*args, &block)
# @items << mitem
# end
end
module Views
class HeaderRenderer
def to_html
title + global_nav? + utility_navigation
end
def global_nav?
if current_admin_user.role == "super"
puts "yep"
global_navigation
else
puts "nope"
end
end
end
class TabsRenderer
def render_item(item)
content_tag :li, :id => item.dom_id, :class => [("current" if current?(item)), ("has_nested" unless item.children.blank?)].compact.join(" ") do
unless item.children.blank?
link_to(item.name, item.url || "#") + render_nested_menu(item)
else
link_to item.name, item.url
end
end
end
end
end
end