如何在不需要前缀的情况下为 Vanity URL 设置 Rails routes.rb
How to setup Rails routes.rb for Vanity URL without requiring a prefix
我希望设置 routes.rb 以支持不需要前缀的个性化 URL。例如,不需要 mysite.com/articles/seo-url-here
中的 "articles/"。我只想要 mysite.com/seo-url-here
我如何设置 routes.rb 以便当 url 访问我的站点时: routes.rb 查看 [=28= 中的 seo-url-here
的值] 在 table Article.seo_url
中匹配我数据库中的一条记录。如果未找到匹配项,则 routes.rb 应继续向下浏览 routes.rb 文件的其余部分。
入门的基本代码:
# config/routes.rb
Rails.application.routes.draw do
resources :posts
resources :authors
constraints(PostUrlConstrainer.new) do
get "/:id", to: "posts#show"
end
end
# app/constraints/post_url_constrainer.rb
class PostUrlConstrainer
def matches?(request)
title = request.path_parameters[:id]
Post.find_by(title: title)
end
end
# app/controllers/posts_controller.rb
def set_post
@post = Post.find_by(title: params[:id])
end
相关文章:Pretty, short urls for every route in your Rails app - Arkency Blog
搜索 rails url constraint
似乎有帮助。
我希望设置 routes.rb 以支持不需要前缀的个性化 URL。例如,不需要 mysite.com/articles/seo-url-here
中的 "articles/"。我只想要 mysite.com/seo-url-here
我如何设置 routes.rb 以便当 url 访问我的站点时: routes.rb 查看 [=28= 中的 seo-url-here
的值] 在 table Article.seo_url
中匹配我数据库中的一条记录。如果未找到匹配项,则 routes.rb 应继续向下浏览 routes.rb 文件的其余部分。
入门的基本代码:
# config/routes.rb
Rails.application.routes.draw do
resources :posts
resources :authors
constraints(PostUrlConstrainer.new) do
get "/:id", to: "posts#show"
end
end
# app/constraints/post_url_constrainer.rb
class PostUrlConstrainer
def matches?(request)
title = request.path_parameters[:id]
Post.find_by(title: title)
end
end
# app/controllers/posts_controller.rb
def set_post
@post = Post.find_by(title: params[:id])
end
相关文章:Pretty, short urls for every route in your Rails app - Arkency Blog
搜索 rails url constraint
似乎有帮助。