Rails中相同资源的两条路由(用于SEO目的)

时间:2014-03-30 02:51:31

标签: ruby-on-rails

以下是帖子的可能ID:

tj1nbomj3m

现在,让我们说我们想去那个帖子的页面。好吧,我们会这样做:

/posts/tj1nbomj3m

但我们也是SEO的头脑。尽管做posts/:id会有效,但我对SEO有点担心。因此,我宁愿通过从posts/:id/:titleposts/:id的重定向来posts/:id/:title

我知道如何在Laravel中执行此操作,但我不知道如何在Rails中执行此操作。有谁知道怎么做?

1 个答案:

答案 0 :(得分:3)

routes.rb

resources :posts
get '/posts/:id/:title' => 'posts#show', as: 'post_by_title'

现在在您的控制器中

def show
  @post = Post.find_by(id: params[:id])
  if !params[:title]
    redirect_to video_by_title_path(@post.id, @post.title)
  end
end

最后,构建网址

post_path(@post)
#=> "/posts/post_id"

post_by_title_path(@post.id, @post.title)
#=> "/posts/post_id/post-title"
相关问题