簡體   English   中英

如何在rails的active_admin中添加一個動作

[英]How to add an action in active_admin in rails

我正在 Rails 中的 active_admin 上工作,我想在其中添加一個將運行服務的操作。

動作應該出現在索引視圖中。 那么,我如何添加運行此服務的操作。

我的 app/admin/website.rb 代碼是

ActiveAdmin.register Website do
  actions  :index

  index do
    selectable_column
    id_column
    column :state
    column :name
    column :created_at
    column :updated_at
  end
end

在上面的文件中,我想檢查 id state='draft'然后它應該運行運行服務的操作。

我的服務文件 app/services/website_verify_state_service.rb:

class WebsiteVerifyStateService
    
  def self.process!(website)
    new(website).process
  end

  def initialize(website)
    @website = website
  end

  def process
    site_response = self.class.post("#{BASE_MONO_URL}reseller/account/site", 
      
    site_data = JSON.parse(site_response.body)['data']
    if site_data
      @website.update(published: true) if site_data[0]['site']['lastPublishDate'].present?
    end
  end
end

所以我唯一擔心的是我如何通過活動管理員的操作調用此服務。 提前致謝

您可以向index表添加條件操作:

ActiveAdmin.register Website do
  actions  :index

  index do
    selectable_column
    id_column
    column :state
    column :name
    column :created_at
    column :updated_at
    actions do |website|
      item('Verify state', verify_admin_websites_path(website.id), class: 'member_link') if website.state == 'draft'
    end
  end

  member_action :verify do
    # do your magic here, like or whatever you do
    WebsiteVerifyStateService.process!
    redirect_back(fallback_location: root_path)
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM