在 Ruby 中如何调用具有嵌套路由的类的 show 操作?

问题描述 投票:0回答:1

如何定义或编写 do 块来调用具有嵌套路由的 show 操作?

收到“Jobs#index 中的 NoMethodError”,其中

<% @companies.jobs.each do |job| %>
引发未定义的方法
 `jobs' for #<Company::ActiveRecord_Relation:0x00007fa4d2085e70>

希望为每家发布职位的公司采取行动。

作业索引控制器

def index
    @companies = Company.all
    @jobs = Job.all.order("created_at ASC")
end

作业显示控制器

def show
    @company = Company.find(params[:company_id])
    @job = @company.jobs.find(params[:id])
  end

路线

resources :companies do
    resources :jobs
end

铁路路线

company_job GET    /companies/:company_id/jobs/:id(.:format)                  jobs#show

公司模型

has_many :jobs, dependent: :destroy

工作模式

belongs_to :company, optional: true

当前作业索引页做块

<% @companies.jobs.each do |job| %>
   <%= link_to company_jobs_path(@company) %> #show action trying to call for the company posting the job
<% end %>
ruby-on-rails ruby activerecord
1个回答
0
投票

您在这里遇到一些问题:

首先,

company_jobs_path
是索引操作,而不是显示操作。
company_job_path
是显示动作助手。

其次,

link_to
的第一个参数必须是链接的文本,而不是
href

因此,对于嵌套路线,您需要提供公司和工作,因此在您的区块中只需:

link_to "Some text", company_job_path(@company, job)

编辑:实际上,只是注意到你的块包装中有

@companies
而不是
@company
。所以你也需要解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.