繁体   English   中英

在Rails的link_to上传递ID的路由错误

[英]Routing Error passing an ID on a link_to in Rails

我的Rails应用程序中有以下一组路线:

resources :customers do
  resources :jobs
end

我也有以下两个模型-job.rb和customer.rb:

class Job < ActiveRecord::Base
  belongs_to :customer
end

class Customer < ActiveRecord::Base
  has_many :jobs
end

我的jobs_controller.rb中有以下新方法:

def new
  @customer = Customer.find(params[:customer_id])
  @job = @customer.jobs.build
end

我试图在创建后将客户ID直接传递给新作业,因为每个作业都应与一个客户相关联(没有无赖的作业,没有customer_id相关联)。

为此,我在客户视图页面上具有以下链接:

<%= link_to "Add New Job", new_customer_job_path(@customer) %>

单击时,ID正在传递,但是出现如下所示的无方法错误:

NoMethodError in Jobs#new

undefined method `jobs_path' for #<#<Class:0x007f89899d9030>:0x007f898a7ab0f0>

  <%= form_for(@job) do |f| %>

因此,这似乎与我的路线有些冲突,因为它不喜欢我的工作路线-有人知道这是哪里来的吗?

先谢谢您的帮助。

form_for @job将查找作业控制器。 因为您嵌套了它,所以它不起作用。

切换到

<%= form_for([@customer, @job]) do |f| %>

假设您有一个前置过滤器,可以在控制器中找到客户。

只需更换

<%= form_for(@job) do |f| %>

<%= form_for[@customer, @job]) do |f| %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM