在rails中实现类似的文章功能

时间:2014-04-18 18:17:59

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个rails应用程序,它有一个工作模型和一个公司模型。工作是belongs_to:公司和公司has_many:工作

这份工作有:job_title,country和company_id 该公司有:company_name和company_industry 我希望每个工作根据国家company_industry和company_id的相似性来显示相关工作,有人可以指导我实现这个功能吗?

更新

这是我的工作模式

class Job < ActiveRecord::Base

  validates_presence_of :company_name, :job_title, :experience, :contrat, :job_description, :profile_recherche, :job_contact



    belongs_to :company
  belongs_to :user



    searchable do
        text :job_title, boost: 4
        text :profile_recherche
    end


      def company_name
        company.try(:name)
      end

      def company_name=(name)
         self.company = Company.find_or_create_by(name: name) if name.present?
      end



    extend FriendlyId
    friendly_id :job_title, use: :slugged



end

这是我的工作控制器

class JobsController < ApplicationController
  before_action :set_job, only: [:show, :edit, :update, :destroy]


  def index
    @jobs = Job.paginate(page: params[:page], per_page: 6)
  end


  def search

    @jobs = Sunspot.search(Job) do
      keywords params[:query]
      fulltext params[:query]
      paginate(page: params[:page], per_page: 1)
    end.results

    respond_to do |format|
      format.html { render :action => "index" }
    end

  end



  def show
  end


  def new
    @job = Job.new
  end


  def edit
    @job = Job.find_by_slug(params[:id])
  end


  def create
    @job = Job.new(job_params)

    respond_to do |format|
      if @job.save
        format.html { redirect_to @job}
      else
        format.html { render action: 'new' }
      end
    end
  end

def update
  respond_to do |format|
    if @job.update(job_params)
      format.html { redirect_to @job }
    else
      format.html { render action: 'edit' }
    end
  end
end


  def destroy
    @job.destroy
    respond_to do |format|
      format.html { redirect_to jobs_url }
    end
  end


  private

    def set_job
      @job = Job.find_by_slug(params[:id])
    end


    def job_params
      params.require(:job).permit(:job_title, :experience, :contrat, :job_description, :profile_recherche, :job_contact, :company_id, :company_name)
    end
end

1 个答案:

答案 0 :(得分:0)

试试这个 你有特殊的工作,然后得到相关的工作

 job = Job.where(id: params[:job_id]).first
 related_jobs = Job.where("id != '#{job.id}'").where("company_id = '#{job.company.id}' OR country = '#{job.country}' ")

它将为您提供属于当前公司的所有相关工作,或者与您当前工作所在国家/地区相同的工作。