Unë jam duke konvertuar një sërë faqesh uljeje të shkruara në php për t'i shtuar ato në faqen time të bazuar në RoR (që ka më shumë se 2 vjet që ekziston). Këto faqe ulje janë të ndara në disa versione, por fatkeqësisht nuk ka konsistencë për sa i përket emrave të URL-ve. Problemi im është se faqet php që po konvertoj tashmë kanë një renditje të lartë faqesh, prandaj unë do të doja t'i mbaja URL-të e tyre pikërisht ashtu siç ishte.
Nuk jam i sigurt se si t'i vendos routes.rb e mia, kështu që example.com/* do të shkojë gjithmonë në faqen time kryesore; megjithatë, kur (* == 'emri-i-një-nga-faqe-vendosje') Rails do të drejtohen në një kontrollues të veçantë, ku një veprim specifik do të përcaktojë se cilën faqe do të jepet, bazuar në një Inicializer dhe hash-in e parametrave , e gjithë kjo ndërkohë që URL-ja është, siç u përmend, identike me atë që ishte përpara konvertimit php-në-RoR, përkatësisht www.example.com/name_of_landing_page, në vend të www.example.com/*controller_name*/name_of_landing_page.
Unë di për vetinë :path që mundëson përjashtimin e emrit të kontrolluesit nga shtegu nëse kalon një varg bosh (d.m.th. resources :examples, :path => ''
), por kjo nuk e zgjidh plotësisht të gjithë problemin.
Po mendoja të shkruaja një inicializues që do të mbante një hash të të gjitha faqeve përkatëse të uljes dhe të përdorja kufizime në routes.rb për ta kontrolluar atë, por nuk jam i sigurt nëse ky lloj zbatimi është i mundur dhe si të veprohet me të. Një shembull kodi do të vlerësohej shumë.
A ka ndonjë lloj sintakse për routes.rb që do të më mundësonte ta bëja këtë, apo ndoshta një zgjidhje më e mirë?
match '/:page_name' => 'controller#action', :as => :something, :constraints => lambda { |r| MyInitializer::Relevant_Hash.has_key?(r.params[:page_name]) }
Fatkeqësisht, siç e përmendët, tani po marr një gabim duke thënë 'MyInitializer konstante e uninializuar' (në mënyrë ironike). 01.09.2013