[ Pobierz całość w formacie PDF ]
4
Rails. Przepisy
18. Powiązania modelu wiele-do-wielu z samym sobą ....................... 103
19. Znakowanie zawartości ............................................................. 107
20. Wersjonowanie modeli .............................................................. 115
21. Przejście na schematy oparte na migracjach ................................ 121
22. Powiązania wiele-do-wielu z dodatkowymi danymi ..................... 129
23. Powiązania polimorficzne — has_many :whatevers ..................... 135
24. Dodanie zachowań do powiązań Active Record ......................... 141
25. Dynamiczna konfiguracja bazy danych ....................................... 147
26. Używanie Active Record poza Rails ......................................... 149
27. Wykonywanie obliczeń na danych modelu .................................. 151
28. Upraszczanie kodu Active Record poprzez zawężanie ................ 155
29. Inteligentne struktury danych z composed_of() ........................... 157
30. Bezpieczne używanie modeli w migracjach ................................. 161
Część III Przepisy kontrolera ........................................................ 163
31. Uwierzytelnianie użytkowników ................................................. 165
32. Autoryzacja użytkowników za pomocą ról .................................. 173
33. Porządkowanie kontrolerów za pomocą akcji zwrotnych .............. 179
34. Monitorowanie wygasających sesji ............................................. 181
35. Renderowanie CSV w akcjach .................................................. 185
36. Czytelne (i ładne) adresy URL ................................................. 187
37. Podwaliny uwierzytelniania ....................................................... 193
38. Przejście na sesje Active Record ................................................ 195
39. Pisanie kodu, który pisze kod .................................................... 197
40. Zarządzanie stroną statyczną w Rails ........................................ 205
Część IV Przepisy testów ............................................................... 207
41. Tworzenie dynamicznych obiektów fixture dla testów .................. 209
42. Tworzenie obiektów fixture na podstawie rzeczywistych danych ..... 215
43. Testowanie na przestrzeni wielu kontrolerów .............................. 221
44. Pisanie testów dla metod pomocniczych ..................................... 229
Część V
Przepisy ogólne ................................................................ 233
45. Automatyzacja tworzenia aplikacji poprzez własne generatory ..... 235
46. Ciągła integracja kodu .............................................................. 243
47. Powiadamianie o nieobsłużonych wyjątkach ............................... 249
 Spis treści
5
48. Tworzenie własnych zadań Rake ............................................... 255
49. Radzenie sobie ze strefami czasowymi ........................................ 263
50. Życie na krawędzi (rozwoju Rails) ............................................ 271
51. Syndykowanie strony poprzez RSS ........................................... 277
52. Tworzenie własnych wtyczek Rails ............................................ 287
53. Sekretne URL-e ...................................................................... 293
54. Szybki podgląd zawartości sesji ................................................. 299
55. Współdzielenie modeli pomiędzy aplikacjami ............................. 301
56. Generowanie dokumentacji dla aplikacji ..................................... 305
57. Przetwarzanie przesłanych zdjęć ................................................ 307
58. Łatwe wyświetlanie list grupujących ........................................... 313
59. Śledzenie tego, co kto zrobił ...................................................... 315
60. Dystrybucja aplikacji w postaci pojedynczego katalogu ................ 321
61. Dodawanie obsługi lokalizacji .................................................... 325
62. Konsola jest Twoim przyjacielem ............................................... 333
63. Automatyczny zapis szkicu formularza ....................................... 335
64. Walidacja obiektów spoza Active Record ................................... 339
65. Proste białe listy HTML .......................................................... 343
66. Dodawanie prostych usług sieciowych do naszych akcji ............... 347
Część VI Przepisy poczty elektronicznej ..................................... 353
67. Wysyłanie poczty elektronicznej o bogatej treści .......................... 355
68. Testowanie poczty przychodzącej .............................................. 361
69. Wysyłanie wiadomości z załącznikami ........................................ 371
70. Obsługa zwrotów wiadomości .................................................... 375
Dodatki .............................................................................. 383
A Zasoby ....................................................................................... 385
Skorowidz ....................................................................................... 387
 Przepis 1. • Edycja formularza w miejscu
13
Problem
Nasza aplikacja ma jeden lub więcej fragmentów danych, które są często
edytowane przez użytkowników — zwykle bardzo szybko. Chcemy umoż-
liwić użytkownikom łatwą edycję danych
w miejscu
, bez otwierania osob-
nego formularza.
Rozwiązanie
Rails sprawia, że edycja w miejscu jest prosta dzięki kontrolce script.aculo.us
InPlaceEditor
i towarzyszących jej metodach pomocniczych. Przejdźmy od
razu do rzeczy i wypróbujmy ją.
Najpierw stworzymy model i kontroler, na którym zademonstrujemy jej
działanie. Załóżmy, że tworzymy prostą książkę kontaktów. Poniżej znaj-
duje się kod migracji Active Record, którego użyjemy do definicji schematu:
InPlaceEditing/db/migrate/001_add_contacts_table.rb
 14
Część I • Przepisy na interfejs użytkownika
class AddContactsTable < ActiveRecord::Migration
def self.up
create_table :contacts do |t|
t.column :name, :string
t.column :email, :string
t.column :phone, :string
t.column :address_line1, :string
t.column :address_line2, :string
t.column :city, :string
t.column :state, :string
t.column :country, :string
t.column :postal_code, :string
end
end
def self.down
drop_table :contacts
end
end
Następnie użyjemy domyślnie wygenerowanego modelu jako naszej klasy
Contact
. Aby szybko uruchomić nasz kod, wygenerujemy model, kontroler
i widoki, wykorzystując generator rusztowania (scaffolding) Rails:
chad> ruby script/generate scaffold Contact
exists app/controllers/
: : :
create app/views/layouts/contacts.rhtml
create public/stylesheets/scaffold.css
Teraz możemy już uruchomić
script/server
, otworzyć w przeglądarce
http://localhost:3000/contacts/ i dodać kilka wpisów. Po kliknięciu łącza
Show przy dopiero co utworzonym wpisie powinna ukazać się prosta, po-
zbawiona dekoracji strona prezentująca szczegóły danego wpisu w książce
kontaktów. Na tej stronie dodamy naszą kontrolkę edycji w miejscu.
Pierwszym krokiem do wykorzystania Ajax jest upewnienie się, że w naszych
widokach dołączone są niezbędne pliki JavaScript. Gdzieś w sekcji
<head>
naszego dokumentu HTML możemy wywołać:
<%= javascript_include_tag :defaults %>
Zwykle umieszczamy tę deklarację w domyślnym szablonie aplikacji (app/
views/layouts/application.rhtml), aby nie martwić się o dołączenie jej (po-
dobnie jak innych globalnych dla aplikacji ustawień, znaczników itd.) do
każdego widoku, który tworzymy. Jeśli będziemy potrzebować efektów Ajax
tylko w konkretnych sekcjach aplikacji, możemy zdecydować się na lokalne
  [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • gackt-camui.opx.pl