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(’<--’) = ’&lt;--’
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

Podobne dokumenty