Ruby on rails 更改自:Rails 3路由中URL中的Id

Ruby on rails 更改自:Rails 3路由中URL中的Id,ruby-on-rails,routing,Ruby On Rails,Routing,男孩,这看起来是小菜一碟,但我在厨房里找不到-- 有没有一种方法可以在不使用“match/post/:pid”的情况下将默认参数“:id”更改为其他类似“:pid”的参数?我想避免使用“match”,因为它感觉特别脆弱 编辑要确认,只有在我能够做到以下几点的情况下,这才是成功的: pid = params[:pid] 做: pid = params[:id] 已经可以工作了,但代码是错误的,因为里面没有id。如果我没弄错,请检查以下内容: 基本上,您应该在模型中重写到_param方法:

男孩,这看起来是小菜一碟,但我在厨房里找不到--

有没有一种方法可以在不使用“match/post/:pid”的情况下将默认参数“:id”更改为其他类似“:pid”的参数?我想避免使用“match”,因为它感觉特别脆弱

编辑要确认,只有在我能够做到以下几点的情况下,这才是成功的:

pid = params[:pid]
做:

pid = params[:id]

已经可以工作了,但代码是错误的,因为里面没有id。

如果我没弄错,请检查以下内容:

基本上,您应该在模型中重写
到_param
方法:

  def to_param
  pid
end
当您想要获取对象时,请在控制器中执行以下操作:

@object= Object.find_by_pid(params[:id])

祝你好运

您可以在模型中定义
to_param
方法:

def to_param
  pid
end

然后所有生成的链接等将使用
pid
而不是
id
。在您的控制器中,
params[:id]
将实际为您提供
pid
,而不是
id
,它实际上仍然使用
params[:id]
,而不是
params[:pid]
(除非您使用
:pid
作为参数名定义自定义路由)。对,但这是一种气味,因为params[:id]中有一个pid,不是id。我想使用params[:pid]获取pid。与上面的注释相同-我想使用params[:pid]获取pid,而不是params[:id]。获取检查,因为你爆出了我必须硬编码路由的坏消息:(