我想删除活动管理员显示页面上任何记录的编辑按钮,除了月份和年份等于当前月份和年份的记录。
我能够使用
在索引中执行此操作 if (es.month == Date.today.strftime("%m").to_i) && (es.year == Date.today.strftime("%Y").to_i )
span link_to 'Edit', "/executive_summaries/#{es.id}/edit"
end
我的executive_summaryies.rb包含
ActiveAdmin.register Executive::Summary do
menu :parent => 'Reports'
config.batch_actions = true
. . .
action_item :only => :show do
link_to_function("#{ActiveAdmin::Iconic.icon(:document_stroke)} Print Executive Summary".html_safe, "javascript:print()")
end
. . .
controller do
. . .
def edit
@run_js_functions = %w(ExecutiveSummaries.init)
end
def show
@run_js_functions = %w(ExecutiveSummaries.accordion)
end
. . .
end
代码当前的方式,编辑按钮显示在标题栏中(默认情况下我相信),旁边有一个打印按钮。 (来自上面显示的代码)。
如何在显示/查看页面上显示当前月份和年份的记录的编辑按钮?
答案 0 :(得分:1)
在executive_summaryies.rb
的顶部,您应该可以执行此类操作,这将完全删除编辑按钮。
ActiveAdmin.register Executive::Summary do
actions :all, except: [:edit]
...
end
现在根本没有显示编辑按钮,然后您可以有条件地添加它:
ActiveAdmin.register Executive::Summary do
actions :all, except: [:edit]
...
action_item only: :show do
if show_edit_button?
link_to 'Edit', '/executive_summaries/#{resource.id}/edit'
end
end
end
显然,您必须使用要用于确定的逻辑定义的show_edit_button?
方法是否显示按钮。此外,您可以使用resource
来引用当前对象。
答案 1 :(得分:1)
首先从所有#show页面上删除编辑按钮:
config.action_items.delete_if {|item| item.name == :edit && item.display_on?(:show) }
然后有条件地添加它:
action_item :my_action, only: :show, if: proc { resource.year = Date.today.year && resource.month == Date.today.month }
link_to ...
end
h / t https://hungnhotblog.wordpress.com/2016/09/14/conditionally-show-buttons-on-show-page/
答案 2 :(得分:0)
考虑在自定义授权适配器中放置逻辑。 有关详细信息,请参阅documentation。