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

时间:2017-06-23 14:03:19

标签: 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

我的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

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

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

3 个答案:

答案 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