1

我是 Rails 新手,我开始使用嵌套资源。我一直在阅读这个http://guides.rubyonrails.org/routing.html#nested-resources所以我创建了 2 个模型,一个产品和一个发件人。产品有许多发件人。我的发件人模型是这样的:

class Sender < ActiveRecord::Base
  attr_accessible :product_id, :email, :name

  belongs_to :product
end

我的产品是这个

class Product < ActiveRecord::Base
  attr_accessible :name, :price

   #Relationships !
   has_many :senders,  dependent: :destroy
end

在我的 routes.rb 中:

  resources :products do
     resources :senders
  end 

根据http://guides.rubyonrails.org/routing.html#nested-resources,现在 rake routes 为我提供了所有正确的路线

所以当我输入网址时

http://localhost:3000/products/1/senders/new

所以我为我的产品创建了一个新的发件人 id = 1 我得到了这个:

 NoMethodError in Senders#new

undefined method `senders_path' for #<#<Class:0x00000003fcf9d8>:0x00000003e6f408>

为什么我会得到这个未定义的方法,因为它应该为我提供该产品发件人的 new.html.erb 页面?

4

1 回答 1

0

请注意,如果您这样做了rake routes,您将找不到您正在寻找的路线。这是因为您的路线senders嵌套在products.

因此,如果您想创建一个新的发件人,路径应该类似于new_product_sender_path(product).

因此,要获取特定产品的所有发件人,路径将是product_senders_path(product).

于 2012-08-25T10:18:20.283 回答