Routing

Witam,
W swoim serwisie chce miec cms’a, no i zatem bedzie jego adres tak wygladac:
site.pl/cms/index

wiadome, cms to jest controller. Moze mi ktos powiedziec czy jeden controller dla CALEGO cmsa czy to aby nie jest blad projektowy? czy zatem cms nie powinien posiadac kilku controllerow obslugujacych poszczegolne jego czesci? np.

site.pl/cms/controller/action
czyli
site.pl/cms/logowanie/index

wtedy logowanie jest controllerem, ale tutaj wychodzi kolejne pytanie, a co jesli chce miec po stronie klienta controller o takiej samej nazwie “logowanie”? a przeciez w projekcie nie moze byc dwoch takich samych controllerow

pozdrawiam

Jeden kontroler dla całej aplikacji to GIGANTYCZNY błąd projektowy :wink:

Controller namespacing, czyli pakowanie do osobnych katalogów. Od Rails 2.1 wreszcie zrobione dobrze.

Poza tym… gdzie problem w oddzieleniu usera-z-dostępem-do-cms od klienta witryny? Mogą się logować tym samym kodem i potem dostawać redirecta przecież.

[quote=Tomash]Jeden kontroler dla całej aplikacji to GIGANTYCZNY błąd projektowy :wink:

Controller namespacing, czyli pakowanie do osobnych katalogów. Od Rails 2.1 wreszcie zrobione dobrze.

Poza tym… gdzie problem w oddzieleniu usera-z-dostępem-do-cms od klienta witryny? Mogą się logować tym samym kodem i potem dostawać redirecta przecież.[/quote]
racja :slight_smile: dziala super, wielkie dzieki

pozdr.

okey wczoraj sprawdzilem ze fajnie sie generuje, ale chcialem teraz dostac sie do tego vidoku w cms i jakos nie dziala juz pokazuje co zrobilem:

wygenerowalem controller: cms/login index

powstaly katalogi i pliki:

Controllers/cms/login_controller
Helpers/cms/login_helper
Views/cms/login/index.html.erb

no i swietnie

nastepnie w routes.rb dodalem:
map.connect ‘cms/:controller/:action’

wpisuje w przegladarke: /cms/login
i bach No route matches “/cms/login” with {:method=>:get}

cos w routes.rb jest zle?

pozdrawiam

[quote=laziers]okey wczoraj sprawdzilem ze fajnie sie generuje, ale chcialem teraz dostac sie do tego vidoku w cms i jakos nie dziala juz pokazuje co zrobilem:

nastepnie w routes.rb dodalem:
map.connect ‘cms/:controller/:action’

wpisuje w przegladarke: /cms/login
i bach No route matches “/cms/login” with {:method=>:get}

cos w routes.rb jest zle?

pozdrawiam[/quote]
Cos mi sie zdaje ze powinno byc /cms/logins <-liczba mnoga
Bo jak jest liczba pojedyncza to jest get czyli dodawanie czegos nowego.
Jak pisze zle to niech ktos poprawi mnie.

Pozdrawiam

[quote=l0pez]Cos mi sie zdaje ze powinno byc /cms/logins <-liczba mnoga
Bo jak jest liczba pojedyncza to jest get czyli dodawanie czegos nowego.
Jak pisze zle to niech ktos poprawi mnie.

Pozdrawiam[/quote]
hmm chyba nie bo ja nie mam czegos takiego w modelu jak logins, chce po prostu wyswietlic ekran z logowaniem do cmsa :expressionless:

pozdr.

Czy na pewno masz kontroler w app/controllers/cms/login_controller.rb o nazwie LoginController?

tak

class Cms::LoginController < ApplicationController
def index
end

end

:expressionless: jeszcze przeinstalowalem railsy (gem install rails -v 2.0.2) dla pewnosci bo podobno to dziala pod ver >= 2

tez korzystalem z tego przykladu http://www.killswitchcollective.com/articles/29_fencing_off_your_cms_with_controller_namespacing :expressionless: i qrde wciaz blad jest

pozdr.

Wydaje mi się, że update do 2.1 może pomóc :wink:

“With Rails 2.0+, you can use namespacing to keep the admin controller logic and views separate from the public controller logic and views.”

:expressionless:

Ale namespacing, to jest coś takiego na przykład:

map.namespace :cms do |cms|
cms.login ‘/login’, :controller => ‘cms/login’, :action => ‘login’
cms.logout ‘/logout’, :controller => ‘cms/login’, :action => ‘logout’
end

Poza tym poczytaj o REST.

drogus ma racje, a to co napisales wczesniej tez dziala bez zarzut w 2.1

okey zajarzylem to, po prostu za bardzo kombinowalem, myslalem ze do controllera nie da sie odwolac przez: cms/login, myslalem o czyms takim cms/:controller/:action a :controller ustawialem jako: login, no i racja przeciez nie mam controllera login a cms/login

dzieki za pomoc

pozdr.