Ruby on rails 更改自:Rails 3路由中URL中的Id
男孩,这看起来是小菜一碟,但我在厨房里找不到-- 有没有一种方法可以在不使用“match/post/:pid”的情况下将默认参数“:id”更改为其他类似“:pid”的参数?我想避免使用“match”,因为它感觉特别脆弱 编辑要确认,只有在我能够做到以下几点的情况下,这才是成功的: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方法:
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]。获取检查,因为你爆出了我必须硬编码路由的坏消息:(