在 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 查询。
我对 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 查询。