私のアプリには2つのモデルがあります:記事とページです。私はこのように見えるようにしたいと思います。複数のRailsルートからコントローラ名を削除するにはどうすればいいですか?
www.mysite.com/this-is-the-title-of-the-article (articles#show)
www.mysite.com/about-me (pages#show)
通常のワードプレスのルートに似ていますが、レールが付いているのは大きな面倒です。私は実用的な解決策を見つけましたが、おそらく改善する可能性があります。ここに私が持っているものがあります。
inside routes.rb;
resources :articles, :pages
# this redirects /:id requests to my StaticPagesController
match ':id' => 'static_pages#redirect', :via => [:get]
resources :articles, :only => [:show], :path => '', as: "articles_show"
resources :pages, :only => [:show], :path => '', as: "pages_show"
インサイドStaticPagesController。
# Basically, it checks if there's a page or article with the given id and renders the corresponding show. Else it shows the 404
def redirect
@article = Article.where(slug_nl: params[:id]).first || Article.where(slug_en: params[:id]).first
@page = Page.where(slug: params[:id]).first
if [email protected]?
@page = Page.friendly.find(params[:id])
render(:template => 'pages/show')
elsif [email protected]?
@article = Article.friendly.find(params[:id])
@relatedarticles = Article.where(category: @article.category).uniq.limit(6).where.not(id: @article)
render(:template => 'articles/show')
else
render(:template => 'common/404', :status => 404)
end
end
注:私は(friendly_id宝石を使用して)title属性で記事やページのIDをスワップアウトしました。記事は2つの言語にもなっています(したがって、私は両方のスラグをチェックします)
アイデアはありますか?私はすでにこれらのいくつかを試しました。
How to remove controller names from rails routes?
制約ソリューをどうやっhttp://blog.arkency.com/2014/01/short-urls-for-every-route-in-your-rails-app/に記載されていますか? –
エラーは私の側にあった、私は実際にあなたのソリューションを使用して問題を解決することができました! –
それを聞いてうれしいです。良い一日を! –