2017-03-05 66 views
0

经过如此多的搜索之后,我终于找到了一种为ActiveAdmin默认模板添加新按钮的方法。 以下是我User.rb文件,其中我加入一个新的按钮将现有路线添加到ActiveAdmin导轨上的新按钮

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

应该沿着这些路线的东西:

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 
+0

我想你的解决方案,它正在处理'联系:: UsersController#resend_email'选择用户并最终给错误'未定义的方法'令牌”的User' @Andrey Deineko。 – user3576036

+0

@ user3576036认真吗?男人,这是一个模型,你应该将正确的参数传递给'UserMailer.confirmation_instructions' - 我应该如何知道他们应该是什么? :) –

+0

我稍后通过了我为'def confirmation_instruction(record,token,opts = {})'传递的相同参数。它没有工作。我认为这是最接近的解决方案。这对我来说确实是新的。只要告诉我应该为问题添加更多的内容,以便你知道应该是什么论点。 – user3576036