2

我正在尝试使用友好 ID 创建更多自定义 url。但是,我想用于 slug 的列仍然是一个数字。我不想只为 slug 创建一个单独的列,因为它是相同的。

我有很多属于拍卖的。
拍卖有很多品(待售物品)。

A Lotlot_number,这是Auction独有的。不过,它在整个表格中并不是唯一的。这基本上只是在每次拍卖中订购批次的一种方式。

我的 URL 看起来像:/auctions/1/lots/21 (/auctions/:auction_id/lots/:id)
我希望它们是:/auctions/1/lots/1 (/auctions/:auction_id/lots/:lot_number )

我将以下内容添加到lot.rb

extend FriendlyId
friendly_id :lot_number

它几乎可以工作。它向我显示了一个批号正确但拍卖错误的批次。
我在 Friendly ID 文档中阅读了有关范围的信息,这听起来很完美。我可以将拍卖范围限定在拍卖范围内……
所以我尝试了:

extend FriendlyId
friendly_id :lot_number, :use => :scoped, :scope => :auction_id

现在我看到以下错误:

SQLite3::SQLException: no such column: lots.slug: SELECT  "lots".* FROM "lots"  WHERE "lots"."slug" = '1' LIMIT 1

为什么是 SQL WHERE lots.slug = 1?不应该WHERE lots.auction_id = 1吗?
我使用了错误的语法吗?不知道我哪里出错了。

任何帮助,将不胜感激。谢谢。

4

1 回答 1

0

我认为你应该看看Rails 中用于查找模型的方法from_param和方法:http: //apidock.com/rails/ActiveRecord/Base/to_paramto_param

于 2013-02-17T18:15:27.447 回答