【问题标题】:Active admin action item/member action活动管理员操作项/成员操作
【发布时间】:2013-09-16 20:28:13
【问题描述】:

所以我有一个非常有效的批处理操作。但是现在我希望通过单击右侧的按钮(例如查看/编辑/销毁)来使用相同的操作。但我似乎无法正确处理。

# app/admin/subscriptions.rb
ActiveAdmin.register Subscription do
...
  batch_action :approve_selected do |subscriptions|
    subscriptions.each do |subscription|
      Subscription.find(subscription).approve
    end
    redirect_to :back
  end

  member_action :approve do
    Subscription.find(params[:id]).approve
    redirect_to :back
  end

  action_item :only => :show do
    link_to('Approve', approve_admin_subscription_path(subscription))
  end
...
end

使用此代码查看、编辑或删除旁边不会显示任何按钮。我认为这是因为我使用的是:only => show,所以我将其取下或使用only :index,但两者都出现以下错误(我找不到太多相关信息):

undefined local variable or method `subscription' for #<ActiveAdmin::Views::ActionItems:0x007fb3a95b25c0>

如果我将操作项行更改为 action_item :only =&gt; index do |subscription|,则会出现以下错误,而 puts subscription 只会给出一些 html(不知道为什么):

undefined method `each_byte' for nil:NilClass

【问题讨论】:

    标签: ruby-on-rails-3 activeadmin


    【解决方案1】:

    这可以通过以下方式完成:

    ActiveAdmin.register Post do
      index do
        column :name
        actions defaults: true do |post|
          link_to 'Archive', archive_admin_post_path(post)
        end
      end
    end
    

    请注意,使用 defaults: true 会将您的自定义操作附加到活动的管理员默认操作。

    【讨论】:

    • 我现在无法测试,但我会接受,因为它看起来效果很好
    • 如何添加多个动作?喜欢批准和拒绝而不使用更多的do-end..?
    • 使用串联。您只需要确保返回安全的 html:(link_to ... + link_to ...).html_safe
    【解决方案2】:

    对于登陆页面的朋友,为了追加1个以上的链接

    做一些类似的事情:

        actions default: true do |model|
            [
                link_to('Option 1', "#"),
                '  ',
                link_to('Option 2', "#")
            ].reduce(:+).html_safe
        end
    

    【讨论】:

      【解决方案3】:

      找到答案here。您可以使用下面的代码和问题中的代码来做到这一点(删除操作项块)

      index do
      ...
        actions do |subscription|
          link_to('Approve', approve_admin_subscription_path(subscription))
        end
      ...
      end
      

      但我认为有一种方法可以通过将操作附加到默认操作来做到这一点(因此,如果您知道该怎么做,请添加另一个答案!)

      此外,要删除默认值,您可以像 here 一样更改它:

      actions :defaults => false do |subscription|
      

      【讨论】:

        【解决方案4】:

        index do下写

        actions dropdown: true do |category|
          item 'Archive', archive_admin_post_path(post)
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-03
          • 2023-04-04
          • 2016-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多