ruby-on-rails - 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
谢谢 !!!
解决方案
推荐阅读
- machine-learning - 关于每周监督学习的论文回顾
- c# - 我正在从光标进行光线投射,请帮助 unity 3d
- java - 如何制作一个所有行都可以用作键的java表?
- r - 循环变异R中的多列
- mysql - MySQL中交叉检查用户行的外键约束
- php - Laravel 多关系数据获取
- java - 管理器应用程序上的 Tomcat 8 403 访问被拒绝(使用 Docker 设置)
- reactjs - 迁移到 monorepo 结构后 Styled-jsx 打字稿错误。“DetailedHTMLProps”类型上不存在属性“jsx”
- java - 突然关闭时关闭系统创建的所有进程
- node.js - 当我打开项目文件夹时,vs 代码终端(cmd)不起作用