EPI: Interfejs Graficzny Wykład nr 8 Warstwa widoku

Podobne dokumenty
EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Laboratorium nr 3 Podstawy Ruby on Rails

EPI: Interfejs Graczny 2008/2009 dania HTTP oraz obsªuga stanu

EPI: Interfejs Graczny 2010/2011 Podstawy Ruby on Rails ci g dalszy

Kurs języka Ruby. Ruby on Rails ActionPack

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Formularze w PHP dla początkujących

Dokument hipertekstowy

Formularze HTML. dr Radosław Matusik. radmat

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

EPI: Interfejs Graczny Podstawy Ruby on Rails

Programowanie w Ruby

Podstawy JavaScript ćwiczenia

ym4r Google Maps w Ruby on Rails

Zajęcia 4 - Wprowadzenie do Javascript

Aplikacje internetowe

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Obiektowe bazy danych

Programowanie internetowe

AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Facelets ViewHandler

Backend Administratora

Dokumentacja Skryptu Mapy ver.1.1

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Celem ćwiczenia jest zapoznanie z językiem HTML i JavaScript, zasadami tworzenia stron WWW i umieszczania na nich skryptów w języku JavaScript.

Programowanie w Ruby

Metaprogramowanie w Ruby

MVC w praktyce tworzymy system artykułów. cz. 2

Podstawy (X)HTML i CSS

Programowanie w Ruby

FORMULARZE Formularz ma formę ankiety, którą można wypełnić na stronie. Taki formularz może być np. przesłany pocztą elektroniczną .

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Bootstrap. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Programowanie w Ruby

Modele danych walidacja widoki zorientowane na model

Bazy Danych i Usługi Sieciowe

Zaawansowany kurs języka Python

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Zdarzenia w JavaScript (Zajęcia r.)

Laboratorium 7 Blog: dodawanie i edycja wpisów

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Quiz Aplikacja internetowa

Laboratorium 6 Tworzenie bloga w Zend Framework

Wybrane znaczniki HTML

Wykład nr 6 Trasowanie i warstwa kontrolera routes.rb i ActionController

Wybrane działy Informatyki Stosowanej

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

Technologie internetowe ASP.NET Core. Paweł Rajba

Dokumenty SEDU składają się z dwóch części: Opisu sprawy Formularza elektronicznego

Wprowadzenie do Internetu Zajęcia 5

media Blitz wydajne sytemy szablonów

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Ruby i Ruby on Rails. Mateusz Drożdżyński

Testowanie aplikacji. Kurs języka Ruby

Budowa dokumentu HTML 5

Modele. Najcz. Metoda unicode definiuje sposób wyświetlania obiektu w postaci tekstowej. BooleanField - pole logiczne, True/False

JAK W NAGŁÓWKU STRONY LUB BLOGA

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Kurs rozszerzony języka Python

Funkcje i instrukcje języka JavaScript

APLIKACJE INTERNETOWE 1 HTML - STRUKTURA STRONY INTERNETOWEJ

Elementarz HTML i CSS

Szablon główny (plik guestbook.php) będzie miał postać:

REFERAT O PRACY DYPLOMOWEJ

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Programowanie w Ruby

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

Przepis 1. Edycja formularza w miejscu 13. Rails sprawia, że edycja w miejscu jest prosta dzięki kontrolce script.aculo.us

Budowa aplikacji wielowarstwowych. Zastosowanie Kaskadowych arkuszy stylów (CSS)

HTML ciąg dalszy. Listy, formularze

MVC w praktyce tworzymy system artykułów. cz. 1

Wykład 03 JavaScript. Michał Drabik

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Pierwsza strona internetowa

SSK - Techniki Internetowe

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

JAVAScript tablice, przekazanie danych do funkcji, obiekty Date i window

Grails. v 1.1 Web Framework

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie Wykład 2 Technologie internetowe

TIN Techniki Internetowe zima

HTML (HyperText Markup Language) hipertekstowy język znaczników

HTML. HTML(ang. HyperTextMarkupLanguage, pol. hipertekstowy język znaczników) język wykorzystywany do tworzenia stron internetowych

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacje webowe. mgr inż. Aleksander Smywiński-Pohl. Elektroniczne Przetwarzanie Informacji

2. Prezentacja wizualna

Aplikacje WWW - laboratorium

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

2 Podstawy tworzenia stron internetowych

Szybko, prosto i tanio - ale czy na pewno?

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Zaawansowane aplikacje internetowe

Komponent Formularz. Rys. 1. Strona programu Joomla - Rys. 2. Instalacja komponentu

Ajax. 1. Wprowadzenie. 2. Aplikacja serwerowa

Transkrypt:

: Interfejs Graficzny Wykład nr 8 Warstwa widoku Elektroniczne Przetwarzanie Informacji Konsultacje: czw. 14.00-15.30, pokój 3.211

Plan prezentacji Wprowadzenie Helpery Fragmenty widoków

MVC w RoR

erb <%= some_statement %> ewaluuje wyrażenie, zamienia je na łańcuch znaków i wyświetla w miejscu wystąpienia

erb <%= some_statement %> ewaluuje wyrażenie, zamienia je na łańcuch znaków i wyświetla w miejscu wystąpienia <% some_statement %> ewaluuje wyrażanie, ale nie wyświetla wyniku

erb <%= some_statement %> ewaluuje wyrażenie, zamienia je na łańcuch znaków i wyświetla w miejscu wystąpienia <% some_statement %> ewaluuje wyrażanie, ale nie wyświetla wyniku Przykład: <b>names of all the people</b> <% for person in @people %> Name: <%= person.name %> <br/> <% end %>

haml haml jest alternatywą dla erb. Pozwala na tworzenie znacznie bardziej zwięzłego kodu: #people %b Names of all the people - for person in @people.name Name: = person.name

haml haml jest alternatywą dla erb. Pozwala na tworzenie znacznie bardziej zwięzłego kodu: #people %b Names of all the people - for person in @people.name Name: = person.name jest zamieniane na: <div id="people"> <b>names of all the people</b> <div class="name"> Name: John Brown <div> <div class="name"> Name: Ann Black <div> </div>

Układ strony (layout) app/views/layouts/library.html.erb: <html> <head> <title>library</title> <%= stylesheet_link_tag "scaffold" %> </head> <body> <%= link_to "Books", books_path %> <%= link_to "Authors", authors_path %> <p style="color: green"><%= flash[:notice] %> </p> <%= yield %> </body> </html>

Układ strony (layout) app/views/layouts/library.html.erb: <html> <head> <title>library</title> <%= stylesheet_link_tag "scaffold" %> </head> <body> <%= link_to "Books", books_path %> <%= link_to "Authors", authors_path %> <p style="color: green"><%= flash[:notice] %> </p> <%= yield %> </body> </html> class AuthorsController < ApplicationController layout "library"... end

Plan prezentacji Wprowadzenie Helpery Fragmenty widoków

Helpery pozwalają na zminimalizowanie ilości kodu Rubiego w widoku

Helpery pozwalają na zminimalizowanie ilości kodu Rubiego w widoku są modułami (a nie klasami) Rubiego

Helpery pozwalają na zminimalizowanie ilości kodu Rubiego w widoku są modułami (a nie klasami) Rubiego Railsy posiadają wiele helperów wbudowanych (np. do tworzenia linków, załączania obrazów, etc.)

Helpery pozwalają na zminimalizowanie ilości kodu Rubiego w widoku są modułami (a nie klasami) Rubiego Railsy posiadają wiele helperów wbudowanych (np. do tworzenia linków, załączania obrazów, etc.) użytkownik może definiować własne helpery w katalogu app/helpers

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a>

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony)

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony) raw brak escapowania tagów HTML

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony) raw brak escapowania tagów HTML form_for szkielet formularza

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony) raw brak escapowania tagów HTML form_for szkielet formularza text_field, check_box, label, password_field, radio_button, text_area, select pola formularza

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony) raw brak escapowania tagów HTML form_for szkielet formularza text_field, check_box, label, password_field, radio_button, text_area, select pola formularza auto_link automatycznie tworzy linki do adresów wykrytych w tekście

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony) raw brak escapowania tagów HTML form_for szkielet formularza text_field, check_box, label, password_field, radio_button, text_area, select pola formularza auto_link automatycznie tworzy linki do adresów wykrytych w tekście simple_format proste formatowanie tekstu

Wbudowane helpery Rails Wbudowane helpery Rails, np. link_to: <%= link_to 'Back', books_path %> Wynik: <a href="/books/list">back</a> Inne: h escapowanie tagów HTML (obecnie domyślnie włączony) raw brak escapowania tagów HTML form_for szkielet formularza text_field, check_box, label, password_field, radio_button, text_area, select pola formularza auto_link automatycznie tworzy linki do adresów wykrytych w tekście simple_format proste formatowanie tekstu ActionView::Helpers pozostałe helpery

Formularze helper form_for pozwala w łatwy sposób tworzyć formularz dla określonego obiektu

Formularze helper form_for pozwala w łatwy sposób tworzyć formularz dla określonego obiektu ma on postać bloku z jednym argumentem

Formularze helper form_for pozwala w łatwy sposób tworzyć formularz dla określonego obiektu ma on postać bloku z jednym argumentem argument bloku pozwala na tworzenie pól formularza powiązanych z odpowiednimi atrybutami obiektu <%= form_for @book do f %> <%= f.text_field :title %> <%= f.select :author_id, @authors %> <%= f.submit "Create" %> <% end %>

Formularze przykład <%= form_for @book do f %> <%= f.text_field :title %> <%= f.select :author_id, @authors %> <%= f.submit "Create" %> <% end %>

Formularze przykład <%= form_for @book do f %> <%= f.text_field :title %> <%= f.select :author_id, @authors %> <%= f.submit "Create" %> <% end %> <form action="/books/create" method="post"> <input name="book[title]" size="30" type="text"/> <select name="book[author_id]"> <option value="1">alan Alexander Milne</option><!--... --> </select> <input name="commit" type="submit" value="create"/> </form>

Formularze przykład <%= form_for @book do f %> <%= f.text_field :title %> <%= f.select :author_id, @authors %> <%= f.submit "Create" %> <% end %> <form action="/books/create" method="post"> <input name="book[title]" size="30" type="text"/> <select name="book[author_id]"> <option value="1">alan Alexander Milne</option><!--... --> </select> <input name="commit" type="submit" value="create"/> </form> { "utf8"=>"[tick]", "authenticity_token"=>"lv/yizzgsevuxjsovw5jx8lyk4egmspz2ixtj5fhhge=", "book"=>{"title"=>"harry Potter", "author_id"=>"2"}, "commit"=>"create Book", "action"=>"create", "controller"=>"books" } params[:book][:title]

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora książka musi akceptować zagnieżdżone parametry dla autora:

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora książka musi akceptować zagnieżdżone parametry dla autora: class Book < ActiveRecord::Base belongs_to :author accepts_nested_attributes_for :author, reject_if: :all_blank end

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora książka musi akceptować zagnieżdżone parametry dla autora: class Book < ActiveRecord::Base belongs_to :author accepts_nested_attributes_for :author, reject_if: :all_blank end w formularzu korzystamy z helpera fields_for

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora książka musi akceptować zagnieżdżone parametry dla autora: class Book < ActiveRecord::Base belongs_to :author accepts_nested_attributes_for :author, reject_if: :all_blank end w formularzu korzystamy z helpera fields_for jego argumentem może być powiązany obiekt (np. @book.author) lub symbol (np. :author)

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora książka musi akceptować zagnieżdżone parametry dla autora: class Book < ActiveRecord::Base belongs_to :author accepts_nested_attributes_for :author, reject_if: :all_blank end w formularzu korzystamy z helpera fields_for jego argumentem może być powiązany obiekt (np. @book.author) lub symbol (np. :author) w przypadku obiektu musi on istnieć

Formularze dla powiązanych obiektów możliwe jest łatwe tworzenie formularzy dla obiektów powiązanych relacjami jeden-do-jeden lub wiele-do-wiele np. jeśli chcemy jednocześnie utworzyć książkę i jej autora książka musi akceptować zagnieżdżone parametry dla autora: class Book < ActiveRecord::Base belongs_to :author accepts_nested_attributes_for :author, reject_if: :all_blank end w formularzu korzystamy z helpera fields_for jego argumentem może być powiązany obiekt (np. @book.author) lub symbol (np. :author) w przypadku obiektu musi on istnieć w przypadku symbolu zostanie utworzony nowy obiekt, jeśli powiązany obiekt nie istnieje

Formularze dla powiązanych obiektów cd. zmodyfikowany formularz pozwala na wybranie istniejącego lub utworzenie nowego autora <%= form_for(@book) do f %> <!-- pola książki... --> <div> <%= f.fields_for :author do author_f %> <p> <%= author_f.label :first_name %> <%= author_f.text_field :first_name %> </p> <p> <%= author_f.label :last_name %> <%= author_f.text_field :last_name %> </p> <% end %> </div> <!-- submit... --> <% end %>

Helpery użytkownika dla widoków określonego kontrolera, ładowane są następujące helpery użytkownika:

Helpery użytkownika dla widoków określonego kontrolera, ładowane są następujące helpery użytkownika: ApplicationHelper app/helpers/application_helper.rb zawierający metody pomocnicze wykorzysywane we wszystkich kontrolerach

Helpery użytkownika dla widoków określonego kontrolera, ładowane są następujące helpery użytkownika: ApplicationHelper app/helpers/application_helper.rb zawierający metody pomocnicze wykorzysywane we wszystkich kontrolerach NazwaKontroleraHelper np. dla app/controllers/authors_controller.rb app/helpers/authors_helper.rb zawierający metody pomocnicze wykorzystywane tylko w widokach tego kontrolera

Helpery użytkownika dla widoków określonego kontrolera, ładowane są następujące helpery użytkownika: ApplicationHelper app/helpers/application_helper.rb zawierający metody pomocnicze wykorzysywane we wszystkich kontrolerach NazwaKontroleraHelper np. dla app/controllers/authors_controller.rb app/helpers/authors_helper.rb zawierający metody pomocnicze wykorzystywane tylko w widokach tego kontrolera dodatkowe helpery można aktywować w kontrolerze: class AuthorsController < ApplicationController helper BooksHelper end

Prosty przykład helpera Definicja w helpers/books_helper.rb: module BooksHelper def book_fancy_title(book) raw("<b>***#{h(book.title)}***</b>") end end

Prosty przykład helpera Definicja w helpers/books_helper.rb: module BooksHelper def book_fancy_title(book) raw("<b>***#{h(book.title)}***</b>") end end Użycie w views/books/show.html.erb: <%= book_fancy_title(@book) %>

Prosty przykład helpera Definicja w helpers/books_helper.rb: module BooksHelper def book_fancy_title(book) raw("<b>***#{h(book.title)}***</b>") end end Użycie w views/books/show.html.erb: <%= book_fancy_title(@book) %> Wynik: <b>***mały Książę***</b>

Rozbudowany przykład helpera Definicja w app/helpers/application_helper.rb: module ApplicationHelper def close() raw link_to(image_tag("cancel.png", title: "zamknij", class: "close_button"),"#") end def panel(&block) content_tag(:div, content_tag(:div, class: "content", style: "width:95%", &block) + content_tag(:div, close(), class: "actions") + content_tag(:div, tag(:span), class: "clear") + '</div>'.html_safe,class: "relations") end end

Rozbudowany przykład helpera Użycie: <%= panel do %> <p> Jakiś tekst </p> <% end %>

Rozbudowany przykład helpera Użycie: <%= panel do %> <p> Jakiś tekst </p> <% end %> Wynik: <div class="relations"><div class="content" style="width:95%"> <p> Jakiś tekst </p> </div> <div class="actions"> <a href="#"> <img alt="cancel" class="close_button" src="/images/cancel.png" title="zamknij" /> </a> </div> <div class="clear"><span /></div></div></div>

Rozbudowany przykład helpera efekt

Plan prezentacji Wprowadzenie Helpery Fragmenty widoków

Fragmenty widoków (partials) ich nazwa rozpoczyna się od znaku podkreślenia

Fragmenty widoków (partials) ich nazwa rozpoczyna się od znaku podkreślenia pozwalają na reużytkowanie fragmentów widoku w wielu widokach.

Fragmenty widoków (partials) ich nazwa rozpoczyna się od znaku podkreślenia pozwalają na reużytkowanie fragmentów widoku w wielu widokach. new.html.erb <h1>new book</h1> <% form_for(@book) do f %> <%= render partial: 'form', object: f %> <p> <%= f.submit "Create" %> </p> <% end %> <%= link_to 'Back', books_path %>

Fragmenty widoków (partials) ich nazwa rozpoczyna się od znaku podkreślenia pozwalają na reużytkowanie fragmentów widoku w wielu widokach. new.html.erb <h1>new book</h1> <% form_for(@book) do f %> <%= render partial: 'form', object: f %> <p> <%= f.submit "Create" %> </p> <% end %> <%= link_to 'Back', books_path %> edit.html.erb <h1>editing book</h1> <% form_for(@book) do f %> <%= render partial: 'form', object: f %> <p> <%= f.submit "Update" %> </p> <% end %> <%= link_to 'Show', @book %> <%= link_to 'Back', books_path %>

Fragmenty widoków cd. _form.html.erb <p> <%= form.label :title %> <br /> <%= form.text_field :title %> </p> <p> <%= form.label :author %> <br /> <%= form.select :author_id, @authors %> </p>

Fragmenty widoków cd. _form.html.erb <p> <%= form.label :title %> <br /> <%= form.text_field :title %> </p> <p> <%= form.label :author %> <br /> <%= form.select :author_id, @authors %> </p> domyślnie fragment jest szukany w katalogu widoków danego kontrolera, czyli np. dla BooksController w app/views/books.

Fragmenty widoków cd. _form.html.erb <p> <%= form.label :title %> <br /> <%= form.text_field :title %> </p> <p> <%= form.label :author %> <br /> <%= form.select :author_id, @authors %> </p> domyślnie fragment jest szukany w katalogu widoków danego kontrolera, czyli np. dla BooksController w app/views/books. jeśli chcemy skorzystać z fragmentu innego kontrolera, musimy poprzedzić jego nazwę nazwą kontrolera, np. <%= render :partial => "books/form" %>

Pytania PYTANIA?