2015-08-27 4 views
2

Я тот, кто всегда любил синатра лучше, чем рельсы, и никогда не должен был делать крупномасштабный проект, который требовал рельсы (все источники, которые я прочитал, говорят, что рельсы лучше для проектов большего масштаба), и теперь мне нужно делать крупномасштабный проект. Я очень смутился с структурой рельсов. То, что я пытаюсь сделать, это рельсы эквивалент этого:Вложенные маршруты в рельсах

get "/" do 
    erb :index 
end 
get "/home" do 
    erb :dashboard 
end 
get "/home/profile" do 
    erb :profile 
end 
get "/home/friends" do 
    erb :friends 
end 

В первом я понимаю, что я должен поставить в app/routes.rb я должен поставить root home#index и в контроллере home я должен поставить def index end.

Во втором, я понимаю, что я должен сделать то же самое, кроме замены индекса на дом.

Но для третьего и четвертого я понятия не имею, что делать.

Кроме того, является ли RESTful способ сделать первые два?

ответ

0

Вы можете иметь это:

resources :home do 
    collection do 
     get :profile 
    end 

    collection do 
     get :friends 
    end 
    end 
end 

Это даст вам маршруты, как это:

profile_home_index GET /home/profile(.:format) home#profile 
friends_home_index GET /home/friends(.:format) home#friends 

Стандартный способ объявления корневой путь:

root 'home#index' 

И для 2-й, вам нужно сделать:

get 'home' => 'home#dashboard' 

, который даст вам этот маршрут:

GET /home(.:format)   home#dashboard 

Один маршрут может быть определен во многих отношениях, что работает. Но у Rails есть соглашения, которые следует соблюдать при определении маршрутов в вашем приложении Rails.

Я настоятельно рекомендую вам взглянуть на Rails Routing Guide

+0

Является ли это RESTful? (Я думаю, что это хорошо) – thesecretmaster

+0

Да, это маршруты RESTful, которые я определил с помощью 'resources' и' collection', см. Здесь: http://guides.rubyonrails.org/routing.html#adding-more-restful- действия –

+0

Большое спасибо! – thesecretmaster

1

Вы, вероятно, хотите что-то вроде этого

root 'home#index' 
get 'home' => 'home#dashboard' 
get 'home/profile' => 'home#profile' 
get 'home/friends' => 'home#friends' 

забудьте использовать команду rake routes, чтобы увидеть все ваши маршруты, где они ведут и что их имена (если они есть)

Я никогда не понимал, что означает RESTful, поэтому кому-то придется ответить на эту часть вашего вопроса.

KM Rakibul Islam показал вам, что можно назвать «находчивым» способом маршрутизации (потому что он использует ключевое слово resources), но похоже, что вы просто делаете статические страницы на этом этапе, так что это не обязательно ,

Самый простой способ сделать маршруты с этой формулой:

method url => controller::action, as: route_name 

где method может быть get, post, patch или delete, так что вы можете иметь различные действия, связанные с тем же URL в зависимости от метода запроса использует.

Ввод названия на маршруте не является обязательным, но это дает вам чистый способ использовать маршрут в ваших просмотрах (route_name_path)

Когда Вы начнете делать модели, то вы увидите, что с помощью ключевого слова resources приходят в удобном виде. Читайте об этом.

+1

Я не принимал вас, потому что @ KMRakibulIslam был лучше, но ваш тоже был очень полезен. +1 – thesecretmaster

Смежные вопросы