Ruby on rails 更改轨道布线标准

Ruby on rails 更改轨道布线标准,ruby-on-rails,database,ruby-on-rails-3,routing,response.redirect,Ruby On Rails,Database,Ruby On Rails 3,Routing,Response.redirect,在我们创建一个新条目之后,标准的重定向是每次重定向到:id。如何将其更改为自有密钥。 我们已经设计了我们的路线 resources :lists match '/:own_key' => 'lists/show' 如果我们创建一个新条目,重定向将转到/list/:id 有没有办法将其改为重定向到自己的密钥 def create @list = List.new(params[:list]) @list = List.create!(params[:list]) respond

在我们创建一个新条目之后,标准的重定向是每次重定向到
:id
。如何将其更改为自有密钥。 我们已经设计了我们的路线

resources :lists
match '/:own_key' => 'lists/show'
如果我们创建一个新条目,重定向将转到/list/:id

有没有办法将其改为重定向到自己的密钥

def create
  @list = List.new(params[:list])
  @list = List.create!(params[:list])
  respond_with(@list)
end

每个模型都有一个名为
to_param
的方法,您可以覆盖该方法

list.rb

class Bar < ActiveRecord::Base
  def to_param
    "#{own_key}.parameterize"
  end
end

如果您想重定向,那么是什么阻止您使用
redirect_to
而不是
respond_with
?我们使用respond_with,因为它允许返回更多格式,如json、xml或atom。现在问题又回来了。routes.rb包含
资源:列表
,这始终是
:id
我们是否要覆盖所有routes手册或是否有配置选项?
:id
是硬编码的。但是,您可以为
response_提供一个块,在该块中覆盖html响应:
{| format | format.html{redirect_to'/path'}
。其他格式将是不变的。这就是我正在寻找的。谢谢
Parameters: {"id"=>"foo"}