在 Rails 上使用 Ruby,在另一个 Ruby class 的显示页面上显示表单域数据的最佳方式是什么?

With Ruby on Rails what's the best way to display data from a form field on a show page from another Ruby class?

我对 Ruby 还是有些陌生,无法在另一个 class 的显示页面上显示数据。我有两个 classes,Company 和 Job。在职位展示页面上,我想在求职者查看相应职位时显示 created/posted 职位的公司表单字段中的公司名称、网站和描述。

修改作业显示控制器操作时收到错误。不完全确定公司在创建时是否没有被分配 id,或者控制器中的 show action login 是否存在问题或我这边的模型关联错误。非常感谢解决此问题的任何帮助和解释。

Screenshot for Error Received on Job Show Page

型号

class Company < ApplicationRecord
  has_many :jobs
  has_many :job_applications, through: :jobs

class Job < ApplicationRecord
  belongs_to :user
  belongs_to :company, optional: true
  has_many :job_applications, dependent: :destroy

class JobApplication < ApplicationRecord
  belongs_to :user
  belongs_to :job

控制器

class CompaniesController < ApplicationController
  
  private
    # Use callbacks to share common setup or constraints between actions.
    def set_company
      @company = Company.find(params[:id])
      # @company = self.create_company
    end

    # Only allow a list of trusted parameters through.
    def company_params
      params.require(:company).permit(:name, :website, :about, :user_id, :avatar)
    end



class JobsController < ApplicationController

   # GET /jobs/1 or /jobs/1.json
  def show
     @company = Company.find(params[:user_id])
  #  @company = Company.all
  #  @job = Job.find(params[:id])
  end

路线

  resources :companies
  resources :jobs
  resources :jobs do
    resources :job_applications
  end

职位展示页面

  <%= @company.name %>
  <%= @company.website %>
  <%= @company.about %>

我认为问题在于 JobsController 中的 show 方法。

它应该看起来像这样:

class JobsController < ApplicationController

   # GET /jobs/1 or /jobs/1.json
  def show
     @job = Job.find(params[:id])
     @company = @job.company
  end

这可能会引发一些错误,因为您的关系中有 optional: true。另外,我不关心 n+1 查询,因为它只是一条记录,但这可以改进为仅对数据库进行 1 SQL 查询。