2017-03-05 65 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