【问题标题】:Custom tab in Spree's admin panelSpree 管理面板中的自定义选项卡
【发布时间】:2012-08-14 21:08:46
【问题描述】:

我无法将我的控制器绑定到创建的管理员面板选项卡。我做错了什么?

routes.rb

match '/admin/pimport', :to => 'spree/admin/pimport#index', :as => :pimport

覆盖/pimport_tab.rb

Deface::Override.new(
  :name => "pimport_tab",
  :virtual_path => "spree/layouts/admin",
  :insert_bottom => "[data-hook='admin_tabs'], #admin_tabs[data-hook]",
  :text => '<%= tab :pimport %>'
)

controllers/spree/admin/pimport_controller.rb

module Spree
  module Admin
    class PimportController < Spree::Admin::BaseController
      def index
      end
    end
  end
end

而我的意见/spree/admin/pimport/index.html.erb 是空白的。


http://localhost:3000/admin/pimport 我收到此错误:

NoMethodError in Spree/admin/pimport#index

显示出来了

/Users/artemaminov/.rvm/gems/ruby-1.9.3-p194@rails327spree/gems/spree_core-1.1.3/app/views/spree/layouts/admin.html.erb 

第 35 行出现的位置:

undefined method `admin_pimport_path' for #  ActionDispatch::Routing::RoutesProxy:0x007f88d5aacca0>

提取的源代码(第 35 行附近):

<div id="admin-menu" data-hook>
  <ul data-hook="admin_tabs">
    <%= render :partial => 'spree/admin/shared/tabs' %>
    <%= tab(:promotions, :url => spree.admin_promotions_path) %><%= tab :pimport %>
  </ul>
  <br class="clear">
</div>

【问题讨论】:

  • 你用的是什么版本的 Spree?

标签: ruby-on-rails ruby spree


【解决方案1】:

在 routes.rb 中应该写:

Spree::Core::Engine.routes.prepend do
  match '/admin/pimport', :to => 'admin/pimport#index', :as => :pimport
end

或使用命名空间:

Spree::Core::Engine.routes.prepend do
  namespace :admin do
    match '/pimport', :to => 'pimport#index', :as => :pimport
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多