Ruby on rails 用户如何报告其他用户?

Ruby on rails 用户如何报告其他用户?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个用户模型。用户可以是雇主或学生。因此,有雇主模式和学生模式。它们都属于用户。只有雇主才能查看学生档案。因此,如果档案有问题,雇主应该能够报告档案。我想在个人资料上有一个“报告”按钮,只有雇主才能看到。然后,当他们点击它时,管理员(我)会收到一封带有url或学生id的电子邮件 现在,学生档案url看起来像www.mywebsite.com/students/johnbig。如何设置报告按钮,以便将整个URL或用户id(John big)通过电子邮件发送给我 邮件程序已经设置好了,因为我将其

我有一个用户模型。用户可以是雇主或学生。因此,有雇主模式和学生模式。它们都属于用户。只有雇主才能查看学生档案。因此,如果档案有问题,雇主应该能够报告档案。我想在个人资料上有一个“报告”按钮,只有雇主才能看到。然后,当他们点击它时,管理员(我)会收到一封带有url或学生id的电子邮件

现在,学生档案url看起来像
www.mywebsite.com/students/johnbig
。如何设置报告按钮,以便将整个URL或用户id(John big)通过电子邮件发送给我

邮件程序已经设置好了,因为我将其设置为每次用户注册时都会收到一封电子邮件。我也可以用同样的逻辑给自己发电子邮件,但问题是获取ID或url。最好的方法是什么

Userinfo控制器(Userinfo=student):

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 userinfoscocontroller
雇主控制员:

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 EmployersController
用户模型:

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
class用户

如果你们需要更多信息,请告诉我。

我将使用
request.url()
获取您视图的url(学生档案url)

尝试将此添加到您的视图中,以了解它:

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


我希望这会有所帮助。

您可以使用
user\u info\u url(@user\u info)
或者您可以在邮件视图中简单地显示id。谢谢,它可以工作。你认为什么是最好的方式发送给我自己?我可以创建一个名为“报告”的按钮,当有人点击它时,它会将url发送给我吗?这可能吗?不客气。在Rails中发送电子邮件本身就是一个完整的主题。您必须配置邮件程序。无论如何,我的快速方法是:在相关视图中为该报告按钮创建一个表单,比如form_按钮。单击按钮时,form_按钮表单应发送到相关控制器中的报告操作。从控制器的动作中,生成电子邮件。哦,好的。我已经有一个邮递员了。现在,当用户注册时,我会收到一封发送到我的管理员电子邮件的电子邮件。我更新了问题以包含该代码。类似吗?对于从控制器发送电子邮件,我想您基本上可以复制粘贴现有代码。为了完成我之前的评论,我将在form_按钮中使用一个隐藏字段,该字段将预先填充相关学生档案url的值。。。