2017-01-02 11 views
0

Я ищу setup route.rb для поддержки URL-адресов тщеславия, которые не требуют префикса. Например, не требуя «статей /» в mysite.com/articles/seo-url-here. Я хочу просто mysite.com/seo-url-hereКак настроить Rails routes.rb для URL тщеславия без использования префикса

Как я могу настроить routes.rb так, что когда URL попадает мой сайт: routes.rb смотрит, чтобы увидеть, если значение seo-url-here в URL соответствует записи в моей базе данных в таблице Article.seo_url. Если совпадение не найдено, то route.rb должен перемещаться вниз по остальной части файла route.rb.

Благодаря

ответ

1

Basic код, чтобы вы начали:

# 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, кажется, помогает.