2017-07-16 103 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