Programim dhe zhvillim, javascript, python, php, html

Konfigurimi i rrugëzimit të ndërlikuar të binarëve 3 - A mundet që routes.rb të qaset në kodin e iniciatorëve?

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ë?


  • Epo, për këtë janë initalizuesit -- për të inicializuar aplikacionin tuaj në gjendjen në të cilën dëshironi të jetë. Initalizuesit do të ngarkohen së pari përpara skedarit routes.rb. 27.08.2013
  • @treehau5, ​​mirë, kur e thua kështu :) Kuptova se kjo është e realizueshme, në fakt po kërkoja një zbatim më të mirë, ndoshta një që është më 'Railsy'. Mbajtja e qindra emrave të faqeve në një iniciator më duket pak e ndyrë. 27.08.2013

Përgjigjet:


1

Për t'iu përgjigjur pyetjes së parë: në routes.rb, brenda bllokut do/end do të jeni në të vërtetë në kontekstin e ActionDispatch::Routing::Mapper, kështu që jo nuk do të jeni. Por, menjëherë pas atij blloku, ju jeni kthyer në nivelin më të lartë të aplikacionit tuaj dhe do të keni akses në çdo variabël që keni inicializuar brenda inicializuesve tuaj, megjithatë, ai kod mund të jetë më i përshtatshëm për të hyrë në application.rb.

E vetmja gjë që duhet të bëni në routes.rb është përcaktimi i rrugëve.

Ju gjithashtu mund të trajtoni kërkesën për faqet e trashëgimisë në raft

def call(env)
  request = Rack::Request.new(env)
  return [200, {"Location" => request.url("http://www.example.com")} if request.host == "www.oldpage.com"
end

Më shumë informacion këtu: http://railscasts.com/episodes/222-rack-in-rails-3

27.08.2013
  • faleminderit për kontributin! A nuk ka asnjë mënyrë për të zgjidhur problemin e shtrirjes brenda routes.rb? Gjithçka që dua të bëj është të kem një kontroll specifik të rrugës për ekzistencën e një çelësi brenda hash-it të Inicializer. Diçka në vijat e: 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

  • 2

    Nuk e kuptoj pse përfshihen gjëra komplekse. Vendosja e tillë duhet të jetë shumë e thjeshtë në rrugë.

    Supozoni se keni një kontrollues për të trajtuar faqet statike të quajtura "PagesController"

    get 'name-of-one-of-the-landing-pages-a', to: 'pages#a'
    get 'name-of-one-of-the-landing-pages-b', to: 'pages#b'
    

    Nuk ka nevojë të shtoni emra kontrolluesish në shteg. Ju mund t'i kontrolloni të gjitha ato.

    27.08.2013
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..