Rails改为to_params url

时间:2011-06-17 15:31:46

标签: ruby-on-rails ruby-on-rails-3

我目前在我的模型中覆盖了我的to_params方法

  def to_param
    normalized_name = title.gsub(' ', '-').gsub(/[^a-zA-Z0-9\_\-\.]/, '')
    "#{self.id}-#{normalized_name}"
  end

,网址显示为/posts/1-Hello-World-very-nice 是否有可能使它显示为/posts/1/Hello-World-very-nice

1 个答案:

答案 0 :(得分:2)

您可以为此添加单独的路线,例如:

在您的路线文件中(假设Rails 3):

match 'posts/:id/:name' => 'posts#show', :as => "show_post"

然后在您的视图中,您需要使用以下内容生成正确的网址:

show_post_path(@post, :name => @post.normalized_name)

请注意,将其放入路径文件中的顺序非常重要,这样您的其他Post路径就不会被覆盖。