Programowanie w Ruby
Transkrypt
Programowanie w Ruby
Programowanie w Ruby Wykład 9 Marcin Młotkowski 5 stycznia 2017 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Plan wykładu 1 Proste środowisko graficzne Menu Obrazki 2 Wątki w aplikacjach graficznych Tkinter 3 Wprowadzenie do Rails 4 Przykład Marcin Młotkowski Programowanie w Ruby 2 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Środowisko okienkowe Tcl/Tk Tcl: Tool Command Language Tk: Tk Toolkit, przenośna biblioteka graficzna Marcin Młotkowski Programowanie w Ruby 3 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Przykład Kalkulator graficzny Okienko do wprowadzania danych Przycisk <Oblicz> Miejsce na wynik Przycisk <Koniec> Marcin Młotkowski Programowanie w Ruby 4 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Implementacja require ’tk’ class Okienko def run @win = TkRoot.new { title ’Kalkulator’ } Marcin Młotkowski Programowanie w Ruby 5 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Implementacja require ’tk’ class Okienko def run @win = TkRoot.new { title ’Kalkulator’ } @entry = TkEntry.new(@win) { pack } @butt = TkButton.new(@win) { text ’Oblicz’; pack } @butt.command { self.oblicz } @label = TkLabel.new(@win) { text ’0’; pack } TkButton.new(@win) { text ’KONIEC’; command { exit }; pack } Marcin Młotkowski Programowanie w Ruby 5 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Implementacja require ’tk’ class Okienko def run @win = TkRoot.new { title ’Kalkulator’ } @entry = TkEntry.new(@win) { pack } @butt = TkButton.new(@win) { text ’Oblicz’; pack } @butt.command { self.oblicz } @label = TkLabel.new(@win) { text ’0’; pack } TkButton.new(@win) { text ’KONIEC’; command { exit }; pack } Tk.mainloop end Marcin Młotkowski Programowanie w Ruby 5 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Implementacja obsługi zdarzeń butt.command { oblicz } def oblicz @label.text = eval(@entry.value) @entry.value = ” end Marcin Młotkowski Programowanie w Ruby 6 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Wynik Marcin Młotkowski Programowanie w Ruby 7 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Opis obrazka @entry.value @butt @label.text Marcin Młotkowski Programowanie w Ruby 8 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Układanie kontrolek Model grid Okno jest dzielone na komórki ułożone w wiersze i kolumny Kontrolki są wstawiane w komórki kontrolki mogą zajmowć więcej niż jedną komórkę Marcin Młotkowski Programowanie w Ruby 9 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Układanie kontrolek w komórkach siatki @entry = TkEntry.new(@win) { grid(:row => 1, :column => 1) } @butt = TkButton.new(@root) { grid(:row => 1, :column => 2) } @label = TkLabel.new(@root) { grid(’row’ => 1, ’column’ => 3) } TkButton.new(@root) { grid(:row => 2, :column => 2) } Marcin Młotkowski Programowanie w Ruby 10 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Rezultat Marcin Młotkowski Programowanie w Ruby 11 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Pierwsze menu menu = TkMenu.new() one = TkMenu.new(menu) menu.add(’cascade’, :menu => one, :label => ’Plik’) one.add(’command’, :label => ’Zapisz’, :command => proc { puts ’Zapisane’}) one.add(’command’, :label => ’KONIEC’, :command => proc { root.destroy }) Marcin Młotkowski Programowanie w Ruby 12 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Drugie menu two = TkMenu.new(menu) menu.add(’cascade’, :menu => two, :label => ’Edycja’) two.add(’command’, :label => ”Skopiuj”, :command => proc { }) root.menu(menu) Marcin Młotkowski Programowanie w Ruby 13 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Wynik Marcin Młotkowski Programowanie w Ruby 14 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Kontrolka TkCanvas cv = TkCanvas.new(root) Marcin Młotkowski Programowanie w Ruby 15 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Kontrolka TkCanvas cv = TkCanvas.new(root) Ustalenie rozmiarów cv.place(:height => 200, :width => 200) Marcin Młotkowski Programowanie w Ruby 15 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Rysowanie na płótnie Na płótnie umieszcza się elementy Tkc*, na przykład TkcArc, TkcLine czy TkcBitmap. Marcin Młotkowski Programowanie w Ruby 16 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Przykład cv.create(TkcOval, 50, 50, 150, 150, ’width’ => 1) cv.create(TkcLine, 100, 80, 100, 110) cv.create(TkcArc, 80, 110, 120, 130, :start => 180, :extent => 180) cv.create(TkcOval, 70, 70, 90, 100, :fill => ’black’) cv.create(TkcOval, 110, 70, 130, 100, :fill => ’black’) TkcText.new(cv, 100, 170, :font => ’Arial 12 bold’, :text => ’Hello, world!’, :anchor => ’center’) Marcin Młotkowski Programowanie w Ruby 17 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Wynik Marcin Młotkowski Programowanie w Ruby 18 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Wynik Marcin Młotkowski Programowanie w Ruby 18 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Pliki graficzne Kontrolki wyświetlające plik img = TkPhotoImage.new(:file => ’plik.gif’) Marcin Młotkowski Programowanie w Ruby 19 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Uwagi Obrazków nie można umieszczać jako samodzielnych kontrolek Obrazy mogą być elementem przycisków lub etykiet Marcin Młotkowski Programowanie w Ruby 20 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Menu Obrazki Uwagi Obrazków nie można umieszczać jako samodzielnych kontrolek Obrazy mogą być elementem przycisków lub etykiet Przykłady TkLabel.new(win) { image img; pack } TkButton.new(win) { image img; pack } TkcImage.new(cv, 100, 100, ’image’ => img) Marcin Młotkowski Programowanie w Ruby 20 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Plan wykładu 1 Proste środowisko graficzne Menu Obrazki 2 Wątki w aplikacjach graficznych Tkinter 3 Wprowadzenie do Rails 4 Przykład Marcin Młotkowski Programowanie w Ruby 21 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Wątki Zadania permanentnie wykonywane podczas działania programu Zadania wykonywane na żądanie w niezależnym wątku Marcin Młotkowski Programowanie w Ruby 22 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Przykład Zegar @clock = TkLabel.new(@win) { text ” ”; pack } @timer = TkAfter.new(1, -1, proc { @clock.text = Time.now.to s }) @timer.start Marcin Młotkowski Programowanie w Ruby 23 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Zadania w wątkach menu.add(’command’, :label => ’Wykonaj’, :command => proc { Thread.new { self.run } }) Marcin Młotkowski Programowanie w Ruby 24 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Plan wykładu 1 Proste środowisko graficzne Menu Obrazki 2 Wątki w aplikacjach graficznych Tkinter 3 Wprowadzenie do Rails 4 Przykład Marcin Młotkowski Programowanie w Ruby 25 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Ruby on Rails (RoR) Co to jest Środowisko do szybkiego tworzenia aplikacji webowych Marcin Młotkowski Programowanie w Ruby 26 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Ruby on Rails – nieco historii Stworzony przez Davida Heinemeiera Hanssona Marcin Młotkowski Programowanie w Ruby 27 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Ruby on Rails – nieco historii Stworzony przez Davida Heinemeiera Hanssona DRY – Don’t Repeat Yourself Marcin Młotkowski Programowanie w Ruby 27 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Ruby on Rails – nieco historii Stworzony przez Davida Heinemeiera Hanssona DRY – Don’t Repeat Yourself Mnóstwo gotowców (Convention Over Configuration) i skryptów generujących szablony Marcin Młotkowski Programowanie w Ruby 27 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Ruby on Rails – nieco historii Stworzony przez Davida Heinemeiera Hanssona DRY – Don’t Repeat Yourself Mnóstwo gotowców (Convention Over Configuration) i skryptów generujących szablony MVC – Model-View-Controller Marcin Młotkowski Programowanie w Ruby 27 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Podstawowe moduły RoR ActionPack odpowiada za przesyłanie żądań (tj. URLi) do odpowiednich modułów oraz odbiera i wyświetla wyniki działań Marcin Młotkowski Programowanie w Ruby 28 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Podstawowe moduły RoR ActionPack odpowiada za przesyłanie żądań (tj. URLi) do odpowiednich modułów oraz odbiera i wyświetla wyniki działań ActiveRecord definiuje ORM (object-relational mapping) Marcin Młotkowski Programowanie w Ruby 28 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Podstawowe moduły RoR ActionPack odpowiada za przesyłanie żądań (tj. URLi) do odpowiednich modułów oraz odbiera i wyświetla wyniki działań ActiveRecord definiuje ORM (object-relational mapping) ActiveSupport różne dodatki i rozszerzenia Marcin Młotkowski Programowanie w Ruby 28 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Podstawowe moduły RoR ActionPack odpowiada za przesyłanie żądań (tj. URLi) do odpowiednich modułów oraz odbiera i wyświetla wyniki działań ActiveRecord definiuje ORM (object-relational mapping) ActiveSupport różne dodatki i rozszerzenia ActiveMailer wysyłanie maili Marcin Młotkowski Programowanie w Ruby 28 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Scenariusz http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#prezenty Marcin Młotkowski Programowanie w Ruby 29 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Scenariusz http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#prezenty http://mikolaj.pl/store/do koszyka/konsola StoreController#do koszyka(konsola) Marcin Młotkowski Programowanie w Ruby 29 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Scenariusz http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#prezenty http://mikolaj.pl/store/do koszyka/konsola StoreController#do koszyka(konsola) http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#przezenty Marcin Młotkowski Programowanie w Ruby 29 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Scenariusz http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#prezenty http://mikolaj.pl/store/do koszyka/konsola StoreController#do koszyka(konsola) http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#przezenty http://mikolaj.pl/store/do koszyka/dvd StoreController#do koszyka(dvd) Marcin Młotkowski Programowanie w Ruby 29 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Scenariusz http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#prezenty http://mikolaj.pl/store/do koszyka/konsola StoreController#do koszyka(konsola) http://mikolaj.pl/przegladanie/prezenty PrzegladanieController#przezenty http://mikolaj.pl/store/do koszyka/dvd StoreController#do koszyka(dvd) http://mikolaj.pl/platnosci/przelew PlatnosciController#przelew Marcin Młotkowski Programowanie w Ruby 29 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Konwencje http://mikolaj.pl/store/do koszyka/dvd: w pliku store controller.rb Marcin Młotkowski Programowanie w Ruby 30 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Konwencje http://mikolaj.pl/store/do koszyka/dvd: w pliku store controller.rb jest klasa StoreController Marcin Młotkowski Programowanie w Ruby 30 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Konwencje http://mikolaj.pl/store/do koszyka/dvd: w pliku store controller.rb jest klasa StoreController z metodą do koszyka Marcin Młotkowski Programowanie w Ruby 30 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Konwencje http://mikolaj.pl/store/do koszyka/dvd: w pliku store controller.rb jest klasa StoreController z metodą do koszyka Jeszcze jest widok do koszyka.rhtml Marcin Młotkowski Programowanie w Ruby 30 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Plan wykładu 1 Proste środowisko graficzne Menu Obrazki 2 Wątki w aplikacjach graficznych Tkinter 3 Wprowadzenie do Rails 4 Przykład Marcin Młotkowski Programowanie w Ruby 31 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Pierwsza aplikacja $ rails create create create create create create ... demo app/controllers app/helpers app/models app/views/layouts config/environments Marcin Młotkowski Programowanie w Ruby 32 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Uruchomienie aplikacji $ ruby demo/script/server => Booting WEBrick... => Rails 2.2.2 application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options Marcin Młotkowski Programowanie w Ruby 33 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Marcin Młotkowski Programowanie w Ruby 34 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Zbudowanie kontrolera $ ruby script/generate controller Hello create create create create app/views/hello app/controllers/hello controller.rb test/functional/hello controller test.rb app/helpers/hello helper.rb Marcin Młotkowski Programowanie w Ruby 35 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Zbudowanie kontrolera $ ruby script/generate controller Hello create create create create app/views/hello app/controllers/hello controller.rb test/functional/hello controller test.rb app/helpers/hello helper.rb Konwencja Kontrolery są w katalogu app/controllers. Marcin Młotkowski Programowanie w Ruby 35 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Wygenerowane szablony app/controllers/hello controller.rb class HelloController < ApplicationController end Marcin Młotkowski Programowanie w Ruby 36 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Wygenerowane szablony app/controllers/hello controller.rb class HelloController < ApplicationController end Rozszerzenie implementacji class HelloController < ApplicationController def world # tu możemy sobie coś policzyć end end Marcin Młotkowski Programowanie w Ruby 36 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Widoki Stronę html generują tzw. widoki Każdej metodzie kontrolera odpowiada plik z widokiem Widoki są w katalogu app/views/<nazwa klasy>/<metoda> Marcin Młotkowski Programowanie w Ruby 37 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Rodzaje widoków Szablony rhtml: html z osadzonym Rubym Szablony rxml: xml z osadzonym Rubym Szablony rjs: dynamicznie generowany JavaScript Marcin Młotkowski Programowanie w Ruby 38 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Budowa widoków app/views/hello/world.rhtml Html + wstawki w Rubym <div> <%= 2 + 2 %> </div> Marcin Młotkowski Programowanie w Ruby 39 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Wstawki rhtml <%= 5.times do | licz | %> <div>Hello world</div> <%= end %> Marcin Młotkowski Programowanie w Ruby 40 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Wstawki rhtml <%= 5.times do | licz | %> <div>Hello world</div> <%= end %> Dodatkowa konwencja <%= 2 + 2 -> Marcin Młotkowski Programowanie w Ruby 40 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Podsumowanie Mamy obsługę akcji (aktywowanych odwołaniami url) Mamy widoki Jak połączyć obliczenia z akcji z widokami? Marcin Młotkowski Programowanie w Ruby 41 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Rozszerzanie funkcjonalności kontrolera class HelloController < ApplicationController def world @greeting = ’Hello world’ end end Marcin Młotkowski Programowanie w Ruby 42 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Widok do kontrolera hello/world.rhtml <%= @greeting %> lub <%= h(@greeting) %> Marcin Młotkowski Programowanie w Ruby 43 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Widok do kontrolera hello/world.rhtml <%= @greeting %> lub <%= h(@greeting) %> Funkcja h(string) Funkcja h przekształca argument na napis z zamienionymi znakami specjalnymi html’a na odpowiedniki, np. h(’<--’) = ’<--’ Marcin Młotkowski Programowanie w Ruby 43 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Referencje do innych stron Podejście bezpośrednie: <a href=’hello/bye’>żegnaj</a> Po Railsowemu <%= link to ’żegnaj’, :action => ’bye’ %> Marcin Młotkowski Programowanie w Ruby 44 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Co trzeba uzupełnić Dopisać metodę bye w kontrolerze HelloController Dopisać widok bye.rhtml Marcin Młotkowski Programowanie w Ruby 45 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Domyślna strona kontrolera Referencji //localhost:3000/kontoler odpowiada Za tę stronę odpowiada metoda kontrolera KontrolerController#index Oraz widok app/view/kontroler/index.rhtml Marcin Młotkowski Programowanie w Ruby 46 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Wspólny układ strony Można wszystkim widokom z kontrolera przypisać jeden wspólny układ stron Dla kontrolera hello trzeba utworzyć szablon app/views/layouts/hello.rhtml Marcin Młotkowski Programowanie w Ruby 47 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Treść szablonu <html><head> <%= stylesheet link tag ’styl’, :media => all %> <title>Szablon</title> </head><body> <%= yield :layout %> </body></html> Marcin Młotkowski Programowanie w Ruby 48 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Treść szablonu <html><head> <%= stylesheet link tag ’styl’, :media => all %> <title>Szablon</title> </head><body> <%= yield :layout %> </body></html> Widoki kontrolera Widoki kontrolera powinny teraz generować tylko fragmenty html’a. Marcin Młotkowski Programowanie w Ruby 48 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Układ stron jeszcze raz class HelloController < ApplicationController layout ’standard’ ... end Marcin Młotkowski Programowanie w Ruby 49 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład A gdzie jest strona główna public/index.html Marcin Młotkowski Programowanie w Ruby 50 / 51 Proste środowisko graficzne Wątki w aplikacjach graficznych Tkinter Wprowadzenie do Rails Przykład Domyślny moduł W pliku config/routes.rb jest wiersz: # map.root :controller => ”welcome” Można wstawić swój kontroler z metodą i widokiem index Trzeba usunąć plik public/index.html Marcin Młotkowski Programowanie w Ruby 51 / 51