Rails管理员 - 无法自定义新操作,而不是在应用操作中显示

时间:2018-01-14 10:02:03

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

我已按照此tutorial创建了新的rails admin action

1.在 lib 文件夹中创建文件name in_app_show.rb

 require 'rails_admin/config/actions'
    require 'rails_admin/config/actions/base'
    module RailsAdmin
      module Config
        module Actions
          class InAppShow < RailsAdmin::Config::Actions::Base
            RailsAdmin::Config::Actions.register(self)
            register_instance_option :member do
              true
            end
            register_instance_option :visible? do
              authorized? && (bindings[:controller].main_app.url_for(bindings[:object]) rescue false)
            end
            register_instance_option :controller do
              proc do
                redirect_to main_app.url_for(@object)
              end
            end
            register_instance_option :link_icon do
              'icon-camera-retro'
            end
            register_instance_option :pjax? do
              false
            end
          end
        end
      end
    end

2.在rails_admin.rb我按照你的意思做了:

require Rails.root.join('lib','in_app_show.rb')
    RailsAdmin::Config::Actions.register(RailsAdmin::Config::Actions::InAppShow)
    RailsAdmin.config do |config|
     ....
    end
  config.actions do
    dashboard                     # mandatory
    index                         # mandatory
    new
    export
    bulk_delete
    show
    edit
    delete
    # show_in_app
    in_app_show   
  end

但是图标和操作没有显示出来。正如您可以看到here没有与show_in_app.rb相关的文件。我认为在最新版本的rails admin中没有再次显示应用操作! 你可以帮我做一个这样的动作吗? 非常感谢

1 个答案:

答案 0 :(得分:1)

我使用您的代码构建了一个应用程序。我想问题是你重定向了你的路径。这是我的代码: ``````

namespace gtl = boost::polygon;
using namespace boost::polygon::operators;
typedef gtl::polygon_90_data<int> Polygon;
typedef gtl::polygon_traits<Polygon>::point_type Point;
typedef gtl::polygon_90_set_data<int> PolygonSet;
Point pts1[] = { Point(10000, 20000), Point(12000, 20000), Point(12000, 14000), Point(10000, 14000)};
Polygon poly1;
gtl::set_points(poly1, pts1, pts1 + 4);

Point pts2[] = { Point(11500, 18000), Point(11500, 25000), Point(14000, 25000), Point(14000, 18000)};
Polygon poly2;
gtl::set_points(poly2, pts2, pts2 + 4);

PolygonSet polyset;
assign(polyset, poly1 + poly2);

Screenshot