我是rails的新手,我开始使用嵌套资源。我一直在阅读http://guides.rubyonrails.org/routing.html#nested-resources,所以我创建了两个模型,一个产品和一个发件人。产品有很多发件人。我的发件人模型是:
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路线为我提供了所需的所有正确路线所以当我输入网址
时http://localhost:3000/products/1/senders/new
所以我为我的产品创建了一个id = 1的新发件人我得到了这个:
NoMethodError in Senders#new
undefined method `senders_path' for #<#<Class:0x00000003fcf9d8>:0x00000003e6f408>
为什么我会得到这个未定义的方法,因为它应该为我提供该产品发件人的new.html.erb页面?
答案 0 :(得分:0)
请注意,如果您执行rake routes
,则无法找到您要查找的路线。这是因为senders
的路由嵌套在products
。
因此,如果您想创建新的发件人,路径应该类似于new_product_sender_path(product)
。
因此,要获取特定产品的所有发件人,路径将为product_senders_path(product)
。