【问题标题】:Why is my activeadmin header_renderer.rb breaking after upgrading to Rails 3.2.8为什么升级到 Rails 3.2.8 后我的 activeadmin header_renderer.rb 中断
【发布时间】:2012-09-14 20:15:36
【问题描述】:

我已经自定义了 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 文件中的内容。注释掉删除和添加操作可修复错误,但如果我注释掉该代码,我的 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

【问题讨论】:

    标签: ruby-on-rails-3 activeadmin


    【解决方案1】:

    @items 没有被初始化,所以它是 nil。 你必须初始化它,例如

    @items ||= []
    

    【讨论】:

    • 我尝试添加@items ||= [] 现在我收到以下错误“显示/Users/mwallace/.rvm/gems/ruby-1.9.3-p194/bundler/gems/active_admin -3d6976ccf8a4/app/views/active_admin/dashboard/index.html.arb 其中第 1 行引发:nil:NilClass 的未定义方法 `[]' 提取的源(在第 1 行附近):1:insert_tag view_factory.dashboard_page"跨度>
    • 我发现了问题。我需要查看 header.rb 文件并更新我的覆盖代码以匹配最新的 activeadmin 代码。在这一点上,我几乎是猴子修补代码以获得我想要的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多