Ruby on rails 将Rails覆盖到_参数?

Ruby on rails 将Rails覆盖到_参数?,ruby-on-rails,Ruby On Rails,如何让to_param方法始终提供关键字段塞?我很难让它使用此路线: map.pike'/auction/:auction\u id/item/:id',:controller=>“items',:action=>“show” 早些时候,重写为_的参数用于 “项目/1-羊绒围巾” 但在“拍卖/123/item/1”中失败 更新: 我不确定语法是否正确[(编辑:它是正确的:它可以工作:-])],或者甚至是有效的。。。。但是使用haml,我发现以下代码可以生成所需的链接(“auction/:auct

如何让to_param方法始终提供关键字段塞?我很难让它使用此路线:

map.pike'/auction/:auction\u id/item/:id',:controller=>“items',:action=>“show”

早些时候,重写为_的参数用于

“项目/1-羊绒围巾”

但在“拍卖/123/item/1”中失败

更新:

我不确定语法是否正确[(编辑:它是正确的:它可以工作:-])],或者甚至是有效的。。。。但是使用haml,我发现以下代码可以生成所需的链接(“auction/:auction\u id/item/:id”)

-用于@auctions.sort{| a,b | a.scheduled_start b.scheduled_start}中的拍卖
-对于@items中的项目
-除非是拍卖
... 派克路径(auction.auction\u id,物品)

我不确定是否理解你的问题。(现在是凌晨3点41分)

在我看来,您可以直接访问
auction\u id
方法,而不是使用
pike\u路径(auction,item)
,该路径将使用
\to\u param

此外,它可能会在
拍卖/123/item/1
中失败,因为您尚未更改控制器

我认为描述一下如何获得有效的鼻涕虫会很有帮助

广义地说,如果您将
#重写为_param
,IDs将不再工作。这意味着,如果使用slug,每次生成polymorpic URL时(例如,
link\u to object,object
),它都会传递到\u param的值。值得注意的是,您还必须更改控制器

我个人认为,轻松生成slug的最佳方法是使用techno weenie,将
has_permalink
添加到您的模型中,然后将
覆盖到_param
。比如说

class Auction < ActiveRecord::Base
  has_permalink :title, :slug
end

顺便说一下,您不应该在视图中对操作进行排序。最好的方法是使用
命名的\u范围

您可以使用
按\u slug查找\u除非找到,否则将引发异常
class Auction < ActiveRecord::Base
  has_permalink :title, :slug
end
class AuctionsController < ApplicationController
  def show
    @auction = Auction.find_by_slug(params[:id]) || raise(ActiveRecord::RecordNotFound)

    respond_to do |format|
      format.html # show.html.erb
    end
end
link_to @action, @action