2014-04-06 19 views
12

Zmieniłem trasę posts#index, aby dopasować blog, a teraz otrzymuję /blog w adresie URL, który próbowałem osiągnąć.Jak zmienić nazwę trasy szyny 4

Próbowałem kilku różnych rzeczy, aby uzyskać mój aktualny wpis na blogu, który obecnie wygląda na trasie podobnej do /posts/this-is-a-test, aby również użyć adresu blog zamiast posts w adresie URL.
Poniżej znajduje się mój aktualny plik trasy. Używam klejnotu friendly_id, jeśli ma to jakikolwiek wpływ na odpowiedź na to pytanie.

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 
+0

@kiddorails dziękuję za oczyszczenie mojego pytania. Właśnie zaczynam używać stosu częściej i poznaję wszystkie formaty. Przeglądanie wprowadzonych zmian okazało się pomocne w sprawdzeniu, gdzie mogę poprawić. Z ciekawości, dlaczego miałbyś edytować podziękowania na końcu mojego pytania, by okazać uznanie ludziom w społeczności? –

+0

Cieszę się, że pomaga ci zrozumieć formatowanie pytań itp. Osobiście chcę bezpośrednio spojrzeć i zrozumieć wymagania pytania; twoja notatka "dziękuję" była większa niż linia i powtarzała kontekst pytania, więc ją usunąłem :). Zawsze możesz dołączyć tylko "Dzięki" lub "Dziękuję!" na twoje pytanie :) – kiddorails

+0

Wystarczająco fair. Dziękuję za odpowiedź poniżej. –

Odpowiedz

26

Opcja wraz z zasobem musi pomóc.

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

To zmieni wszystko /posts i /post do /blogs/ i /blog.

Jeśli chcesz zmienić metody pomocnika swoją trasę takich jak posts_path do blogs_path i new_post_path do new_blog_path etc, można zmienić go as tagu.

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

Albo jeszcze lepiej, można określić kontroler i trasy blogs bezpośrednio jako:

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

To Awesomeness Rails! :)

+1

Będziesz także potrzebować 'as', jeśli chcesz zmienić nazwę twoich pomocników ścieżek na' blog' również –

+0

Zgadzam się. Zaktualizowałem moją odpowiedź z większą ilością informacji :) – kiddorails

+0

@kiddorails Jedynym pytaniem jest teraz, jak uzyskać widoki do załadowania z 'views/blogs' zamiast' views/posts'? – FloatingRock

0
match 'blog/:id' => 'posts#show' 

powinien działać. Ale jeśli chcesz dopasować każdą metodę w kontrolerze postów do bloga (i nie chcesz korzystać ze ścieżki postów), powinienem zmienić nazwę kontrolera na blog i dodać zasób: blog na trasach.