#### {% title "Fortunka" %} # Fortunka w Ruby on Rails Zaczynamy od wygenerowania szkieletu aplikacji: rails fortune Generator rails utworzył wiele katalogów. Po co? cd fortune I juz mozemy przetestować szkielet aplikacji. Uruchamiamy cienkiego: script/server thin -p 3000 i oglądamy stronę testową: http://localhost:3000 Plikowi ze stroną, którą oglądamy zmieniamy nazwę na `welcome.html`: cd public mv index.html welcome.html Teraz strona ta dosŧepna jest pod takim url: http://localhost:3000/welcome.html A stronę główną aplikacji wykonamy za chwilę. ## Generujemy rusztowanie dla modelu Education Zaczynamy od nauczenia Rails, że liczba mnoga od *education* to *education*. **Oj będą problemy!** W pliku *inflections.rb* dopisujemy regułę: :::ruby # Add new inflection rules using the following format # (all these examples are active by default): ActiveSupport::Inflector.inflections do |inflect| # inflect.plural /^(ox)$/i, '\1en' # inflect.singular /^(ox)en/i, '\1' # inflect.irregular 'person', 'people' # inflect.uncountable %w( fish sheep ) inflect.uncountable %w( education ) end Teraz podejrzymy jakie generatory są zainstalowane w systemie: ./script/generate Installed Generators ... scaffold ... ./script/generate scaffold Description: Scaffolds an entire resource, from model and migration to controller and views, along with a full test suite. The resource is ready to use as a starting point for your RESTful, resource-oriented application. Model *Education* wygenerujemy tak: ./script/generate scaffold Education author:string quotation:text Polecenie: ./script/generate scaffold Computer .. utworzy następujące pliki:
Plik | Po co? |
---|---|
app/models/post.rb | The Computer model |
db/migrate/......._create_computers.rb | Migration to create the computers table in your database |
app/controllers/computers_controller.rb | The Computers controller |
app/views/computers/index.html.erb | A view to display an index of all computers |
app/views/computers/show.html.erb | A view to display a single post |
app/views/computers/new.html.erb | A view to create a new post |
app/views/computers/edit.html.erb | A view to edit an existing post |
app/views/layouts/computers.html.erb | A view to control the overall look and feel of the other computers views |
public/stylesheets/scaffold.css | Cascading style sheet to make the scaffolded views look better |
app/helpers/computers_helper.rb | Helper functions to be used from the computers views |
config/routes.rb | Edited to include routing information for computers |
<%= f.label 'Photo' %>
<%= f.file_field :photo %>
<%= image_tag @education.photo.url(:small) %>
<% else %>There are no photo's attached, upload one.
<% end %> ## Dodajemy middleware: Rack::HtmlTidy Jak walidować HTML stron wygenerowanych przez Rails? Wchodzenie na stronę [W3C Markup Validation Service](http://validator.w3.org/) i ręczne wklejanie adresów jest uciążliwe i męczące. Może zainstalować jakiś dodatek do Firefoxa? Może… A może tak „prześwietlić” wygenerowaną stronę HTML Tidy? Jak to zrobić opisałem na [github.com](http://github.com/wbzyl/rack-htmltidy/). ## Tytuły stron (bardzo ważne) W pliku z metodami pomocniczymi dla całej aplikacji wpisujemy: :::ruby module ApplicationHelper def title(title) content_for(:title) { title } end end W layoutach podmieniamy wygenerowany tytuł :::html_rails