首页 > 解决方案 > Rails 管理员 - 排除模型中的操作

问题描述

我是最新的 Rails 管理员,我编写了一个自定义操作,以使用播放和暂停图标切换记录处于活动状态。我想排除其他模型中的动作。

这是我的自定义操作

# lib/rails_admin/custom_actions.rb
module RailsAdmin
  module Config
    module Actions
     class MemberAction < RailsAdmin::Config::Actions::Base
        register_instance_option :member? do
          true
        end
        register_instance_option :visible do
          true
        end
     end
     class ToggleActive < MemberAction
        RailsAdmin::Config::Actions.register(self)
        register_instance_option :only do
          ['FirstJob', 'Internship']
        end
        register_instance_option :http_methods do
          [:get, :post]
        end
        register_instance_option :link_icon do
          subject = bindings[:object]
          icon = subject.active ? 'icon-pause' : 'icon-play'
        end

        register_instance_option :controller do
          Proc.new do
            @object.active = !@object.active
            if @object.save!
              flash[:notice] = "#{@object.title} is now #{ @object.active ? 'actived' : 'desactivated'}"
              redirect_to back_or_index
            else
              flash[:notice] = "Toggle activation of #{object.title} did not worked"
              redirect_to back_or_index
            end
          end
        end
      end
    end
  end
end

我有一个模型Profile,我想排除ToggleActive. 我试过这个:

# config/initializers/rails_admin.rb

RailsAdmin.config do |config|
 config.actions do
    dashboard                     

    # breadcrumb actions
    index                         
    new
    export

    # selected items actions
    bulk_delete
    bulk_activate
    bulk_desactivate

    # inline item actions
    show
    edit
    delete
    show_in_app
    toggle_active do
      except 'Profile'
    end
 end
end

但它仍在加载ToggleActive动作并尝试active找到Profile. 所以它提出了:

undefined method `active' for #<Profile:0x00007fd9b7932c98>

如果我添加unless condition,它正在工作,但我不确定这是执行此操作的正确方法。

# lib/rails_admin/custom_actions.rb
icon = subject.active ? 'icon-pause' : 'icon-play' unless subject.class == Profile

谢谢 !!!

标签: ruby-on-railsrubyrails-admin

解决方案


推荐阅读