2017-07-16 82 views
0

我有一個用戶模型。用戶可以是僱主或學生。所以有一個僱主模型和一個學生模型。他們都屬於用戶。只有僱主才能查看學生檔案。所以如果配置文件有問題,僱主應該能夠報告配置文件。我正考慮在個人資料上有一個「報告」按鈕,只有僱主才能看到。然後,當他們點擊它時,管理員(我)會收到一封電子郵件,其中包含學生的網址或ID。用戶如何報告其他用戶?

現在,學生個人資料網址看起來像www.mywebsite.com/students/john-big。如何設置報告按鈕,以便整個URL或用戶標識(John-big)通過電子郵件發送給我。

郵件程序已經建立,因爲我設置它的方式是每次用戶註冊時都會收到一封電子郵件。我可以使用相同的邏輯給自己發送電子郵件,但抓取ID或URL是問題所在。什麼是最好的方式來做到這一點?

USERINFO控制器(用戶信息=學生):

class UserinfosController < ApplicationController 
    before_action :find_userinfo, only: [:show, :edit, :update, :destroy, :log_impression] 
    before_action :authenticate_user! 


    def index 
    end 

    def show 
    end 

    def new 
     @userinformation = current_user.build_userinfo 
    end 

    def create 
     @userinformation = current_user.build_userinfo(userinfo_params) 
     if @userinformation.save 
      redirect_to userinfo_path(@userinformation) 
     else 
      render 'new' 
     end 
    end 

    def edit 
    end 

    def update 
     if @userinformation.update(userinfo_params) 
      redirect_to userinfo_path(@userinformation) 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     @userinformation.destroy 
     redirect_to root_path 
    end 


    private 
     def userinfo_params 
      params.require(:userinfo).permit(:name, :email, :college, :gpa, :major) 
     end 

     def find_userinfo 
      @userinformation = Userinfo.friendly.find(params[:id]) 
     end 
end 

僱主控制器:

class EmployersController < ApplicationController 
    before_action :find_employer, only: [:show, :edit, :update, :destroy] 

    def index 
    end 

    def show 
    end 

    def new 
     @employer = current_user.build_employer 
    end 

    def create 
     @employer = current_user.build_employer(employer_params) 
     if @employer.save 
      redirect_to userinfos_path 
     else 
      render 'new' 
     end 
    end 

    def edit 
    end 

    def update 
     if @employer.update(employer_params) 
      redirect_to employer_path(@employer) 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     @employer.destroy 
     redirect_to root_path 
    end 

    private 
     def employer_params   
      params.require(:employer).permit(:paid, :name, :company, :position, :number, :email, :emp_img) 
     end 

     def find_employer 
      @employer = Employer.friendly.find(params[:id]) 
     end 
end 

用戶模式:

class User < ActiveRecord::Base 
    has_one :userinfo 
    has_one :employer 

    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    acts_as_messageable 

    after_create :welcome_send 

    def welcome_send 
    WelcomeMailer.welcome_send(self).deliver_now 
    end 

end 

請讓我知道,如果你們東東d更多信息。

+0

您可以使用'user_info_url(@user_info)'或者您可以簡單地在郵件視圖中顯示id。 –

回答

0

我會使用request.url()來獲取您的視圖的URL(學生配置文件url)。

嘗試增加這個給你查看得到它的感覺:

<%= debug("request.url: #{request.url()}") if Rails.env.development? %> 

我希望這有助於。

+0

謝謝,它的工作原理。您認爲將自己發送給自己的最佳方式是什麼?我可以創建一個名爲「報告」的按鈕,當有人點擊它時,它會將網址發送給我?這可能嗎? – LizzyTheLearner

+0

不客氣。在Rails中發送電子郵件本身就是一個完整的主題。你必須配置一個郵件程序。無論如何,我的快速採取是:在該報告按鈕的相關視圖中創建一個表單,例如form_button。點擊按鈕時,form_button表單應該路由到相關控制器中的報告操作。從該控制器操作中,生成電子郵件。 –

+0

哦,好的。我已經有一個郵件設置。現在,當用戶註冊時,我會收到一封電子郵件給我的管理員電子郵件。我更新問題以包含該代碼。它會是相似的嗎? – LizzyTheLearner