web-dev-qa-db-ja.com

ルート名を変更する方法Rails 4

posts#indexのルーティングをblogに一致するように変更したところ、達成しようとしていたURLに/blogが表示されるようになりました。

いくつかの方法で実際のブログ投稿を取得しましたが、現在のルートは/posts/this-is-a-testのようになり、URLでblogではなくpostsも使用しています。
以下は現在のrouteファイルです。 friendly_id gemを使用していますが、この質問への回答に何らかの違いがある場合。

resources :posts do
  resources :comments
end

  resources :contacts, only: [:new, :create]

  root "pages#home"

  get "/home", to: "pages#home", as: "home"
  get "about" => 'pages#about'
  get "pricing" => 'pages#pricing'
  get "contact_us" => 'pages#contact_us'
  match 'blog', to: 'posts#index', via: :all
end 
17
Kevin Dark

path オプションとリソースが役立つ必要があります。

resources :posts, :path => 'blogs' do
  resources :comments
end

これにより、すべての/postsおよび/post/blogs/および/blogに変更されます。

posts_pathblogs_pathに、new_post_pathnew_blog_pathになど、ルートのヘルパーメソッドを変更する場合は、 as タグを使用して変更できます。

resources :posts, :path => 'blogs', :as => 'blogs' do
  resources :comments 
end

または、さらに良い方法として、コントローラーを指定してblogsを次のように直接ルーティングできます。

resources :blogs, controller: 'posts' do
  resources :comments
end

これがRailsのすごさです! :)

35
kiddorails
match 'blog/:id' => 'posts#show'

うまくいくはずです。しかし、投稿コントローラーのすべてのメソッドをブログに一致させたい場合(そして投稿パスを使用したくない場合)、代わりにコントローラーの名前をblogに変更し、ルートにresource:blogを追加します。

0
Giannis