将现有路由添加到ActiveAdmin rails上的新按钮

时间:2017-03-05 11:10:52

标签: ruby-on-rails ruby activeadmin

经过大量搜索,我终于找到了一种向ActiveAdmin默认模板添加新按钮的方法。 以下是我的 User.rb 文件,其中我添加了一个新按钮

  action_item only: :show do
    link_to "Resend Email"
  end

目前,它是在点击时显示操作的路由。但我想将其路由到UserMailer#confirmation_instructions

的routes.rb

Rails.application.routes.draw do
ActiveAdmin.routes(self)
  devise_for :users,controllers: {registrations: 'users/registrations',sessions: 'users/sessions',confirmations: 'users/confirmations'}
end

Usermailer.rb

def confirmation_instructions(record, token, opts={})
    @system_email = SystemEmail.find_by(title: 'Email Verification')
    @subject =  @system_email.try(:subject).to_s
    @subject = "Email Verification" if @subject.blank?

    opts = {subject: @subject}
    @token = token
    devise_mail(record, :confirmation_instructions, opts)
  end

如何将其路由到UserMailer#confirmation_instructions?这个AI在普通的MVC架构上完成了这些工作。但这真的是在吃我的脑袋。有人可以告诉我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:1)

应该是这样的:

action_item only: :show do
  link_to(
    'Resend email',
    resend_email_admin_user_path(user_id: user.id),
    data: { confirm: 'Are you sure you want to resend it?' }
  )
end

member_action :resend_email do
  user = User.find(params[:user_id])
  UserMailer.confirmation_instructions(user, user.token, {})
  redirect_to admin_user_path(user), notice: 'confirmation is sent'
end