我关注此tutorial, 当我想展示我的产品时,我收到了这个错误:
NSNumber *indexNumber=auxDict[targetId];
int index=[indexNumber intValue];
CustomObject *object=myArray[index];
在我的路线文件中:
undefined method `product_bids_path'
devise_for :users
resources :products do
resources :auctions, only: [:create] do
resources :bids, only: [:create]
end
end
中的
products/show.html.erb
这是我的出价部分:
=render "auction"
=render "bid"
此= form_for [ @product, @product.auction, Bid.new] do |f|
帮助器中需要发送form_for
网址请求,但发送product_auction_bids_path
网址请求。
我应该如何编写向product_bids_path
form_for
帮助程序
答案 0 :(得分:1)
似乎评论解决了它;
为了读者的利益,如果您有一组嵌套的路由(如下所示),您必须确保使用 all 调用依赖对象的路径:
resources :products do
resources :auctions, only: [:create] do
resources :bids, only: [:create]
end
end
products_auctions_bids_path(@product, @auction, @bid)
现在
关于这一点有一个重点 - docs状态,你不应该将路线嵌套到一个以上的水平:
资源不应该嵌套超过1级。
您确实需要确保能够根据比所有三种嵌套资源中primary key
更少的唯一信息来调用路由。
我知道你并没有打电话给个别路径(只有create
),但是像你正在做的那样把它全部嵌套仍然是一个糟糕的模式。
有几种方法可以解决这个问题;我个人只会使用auction
和bid
:
#config/routes.rb
resources :auctions, only: :create do
resources :bids
end
无论如何, Auctions
应该基于主键唯一...
#app/models/auction.rb
class Auction < ActiveRecord::Base
belongs_to :auction
has_many :bids
end
#app/models/bid.rb
class Bid < ActiveRecord::Base
belongs_to :auction
end
这将允许您专门识别拍卖,然后根据需要创建出价。