如何删除活动管理节目中的编辑按钮

Chr*_*dla 2 ruby-on-rails ruby-on-rails-3 activeadmin

我想删除活动管理显示页面上任何记录的编辑按钮,月份和年份等于当前月份和年份的记录除外。

我能够在索引中做到这一点

  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
Run Code Online (Sandbox Code Playgroud)

我的 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
Run Code Online (Sandbox Code Playgroud)

目前代码的方式是,编辑按钮显示在标题栏中(我相信默认情况下),旁边有一个打印按钮。(来自上面显示的代码)。

如何在显示/查看页面上显示当前月份和年份记录的编辑按钮?

Ant*_*ang 7

首先从所有 #show 页面中删除编辑按钮:

config.action_items.delete_if {|item| item.name == :edit && item.display_on?(:show) }
Run Code Online (Sandbox Code Playgroud)

然后有条件地添加:

action_item :my_action, only: :show, if: proc { resource.year = Date.today.year && resource.month == Date.today.month }
  link_to ...
end
Run Code Online (Sandbox Code Playgroud)

h/t https://hungnhotblog.wordpress.com/2016/09/14/conditionally-show-buttons-on-show-page/