我正在使用带有 ActiveAdmin 0.4.4 的 Rails 3.2.8 。
如果:destroy
在 ActiveAdmin 资源控制器中启用了该操作,则默认情况下,该按钮将显示在资源页面Delete <resource>
的右上角。show
那个删除按钮有点太突出,太容易点击,我不喜欢。我承认单击按钮时会出现一个确认对话框,但我仍然想重新定位按钮并将其放在其他位置。我可能也会把它做成一个小链接,而不是把它设计成一个按钮。
我该怎么做呢?
我正在使用带有 ActiveAdmin 0.4.4 的 Rails 3.2.8 。
如果:destroy
在 ActiveAdmin 资源控制器中启用了该操作,则默认情况下,该按钮将显示在资源页面Delete <resource>
的右上角。show
那个删除按钮有点太突出,太容易点击,我不喜欢。我承认单击按钮时会出现一个确认对话框,但我仍然想重新定位按钮并将其放在其他位置。我可能也会把它做成一个小链接,而不是把它设计成一个按钮。
我该怎么做呢?
删除操作项添加在 add_default_action_items 中 path/to/activeadmin_gem/lib/active_admin/resource/action_items.rb 中
module ActiveAdmin
class Resource
module ActionItems
...
def add_default_action_items
...
end
end
end
因此,您可以做的就是将删除按钮全部擦除或添加一个特定的 css 类。不是通过更改 gem 源,而是通过将以下内容添加到 /config/initializers/activeadmin.rb 的底部,从而动态打开私有模块方法
module ActiveAdmin
class Resource
module ActionItems
private
def add_default_action_items
# New Link on all actions except :new and :show
add_action_item :except => [:new, :show] do
if controller.action_methods.include?('new')
link_to(I18n.t('active_admin.new_model', :model => active_admin_config.resource_name), new_resource_path)
end
end
# Edit link on show
add_action_item :only => :show do
if controller.action_methods.include?('edit')
link_to(I18n.t('active_admin.edit_model', :model => active_admin_config.resource_name), edit_resource_path(resource))
end
end
# Destroy link on show
add_action_item :only => :show do
if controller.action_methods.include?("destroy")
link_to(I18n.t('active_admin.delete_model', :model => active_admin_config.resource_name),
resource_path(resource),
:method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'),
:class => 'Anjan_styles_its_own_destroy_button_class')
end
end
end
end
end
end
现在,您可以随意设置样式,或者您可以将整个破坏链接注释掉。索引屏幕仍然有资源的删除链接。不要忘记重新启动服务器。
祝你阅读源码好运!