MacBook:~ xyz$ rails new phone_book [...] MacBook:~ xyz$ cd phone_book MacBook:phone_book xyz$ rails generate scaffold company name [...] MacBook:phone_book xyz$ rails generate scaffold employee company_id:integer last_name first_name phone_number [...] MacBook:phone_book xyz$ rake db:migrate [...] MacBook:phone_book xyz$
app/models/company.rb
class Company < ActiveRecord::Base attr_accessible :name validates :name, :presence => true, :uniqueness => true has_many :employees, :dependent => :destroy def to_s name end end
app/models/employee.rb
class Employee < ActiveRecord::Base attr_accessible :company_id, :first_name, :last_name, :phone_number belongs_to :company, :touch => true validates :first_name, :presence => true validates :last_name, :presence => true validates :company, :presence => true def to_s "#{first_name} #{last_name}" end end
app/views/companies/index.html.erb
<h1>Listing companies</h1> <table> <tr> <th>Name</th> <th>Number of employees</th> <th></th> <th></th> <th></th> </tr> <% @companies.each do |company| %> <tr> <td><%= company.name %></td> <td><%= company.employees.count %></td> <td><%= link_to 'Show', company %></td> <td><%= link_to 'Edit', edit_company_path(company) %></td> <td><%= link_to 'Destroy', company, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </table> <br /> <%= link_to 'New Company', new_company_path %>
app/views/companies/show.html.erb
<p id="notice"><%= notice %></p> <p> <b>Name:</b> <%= @company.name %> </p> <%= link_to 'Edit', edit_company_path(@company) %> | <%= link_to 'Back', companies_path %> <h2>Listing employees</h2> <table> <tr> <th>Last name</th> <th>First name</th> <th>Phone number</th> </tr> <% @company.employees.each do |employee| %> <tr> <td><%= employee.last_name %></td> <td><%= employee.first_name %></td> <td><%= employee.phone_number %></td> </tr> <% end %> </table>
http://faker.rubyforge.org/
).
Mit Faker kann man zufällige Namen und Telefonnummern generieren.
Bitte fügen Sie in der Gemfile
-Datei diese Zeile
hinzu:gem 'faker'
MacBook:phone_book xyz$ bundle install
[...]
MacBook:phone_book xyz$
db/seeds.rb
lassen wir 30 Firmen mit
einer jeweils zufälligen Anzahl an Mitarbeitern
erstellen:30.times do company = Company.new(:name => Faker::Company.name) if company.save SecureRandom.random_number(100).times do company.employees.create( :first_name => Faker::Name.first_name, :last_name => Faker::Name.last_name, :phone_number => Faker::PhoneNumber.phone_number ) end end end
MacBook:phone_book xyz$ rake db:seed
MacBook:phone_book xyz$
http://0.0.0.0:3000/companies
und http://0.0.0.0:3000/companies/1
abrufen.MacBook:phone_book xyz$ rails server
=> Booting WEBrick
=> Rails 3.2.6 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-07-13 14:31:45] INFO WEBrick 1.3.1
[2012-07-13 14:31:45] INFO ruby 1.9.3 (2012-04-20) [x86_64-darwin11.4.0]
[2012-07-13 14:31:45] INFO WEBrick::HTTPServer#start: pid=14357 port=3000
http://curl.haxx.se/
).
Natürlich können Sie die Webseiten auch mit anderen Webbrowsern
aufrufen. Wir betrachten die im Rails-Log angezeigte Zeit zum Erstellen
der Seite. Dazu muss man in der Realität noch das Ausliefern der Seite
an den Webbrowser hinzurechnen.http://0.0.0.0:3000/companies
bekommt der Anwender eine Liste aller gespeicherten Firmen mit der
jeweiligen Anzahl von Mitarbeitern angezeigt.Completed 200 OK in 85ms (Views: 71.9ms | ActiveRecord: 12.5ms)
http://0.0.0.0:3000/companies/1
bekommt der Anwender die Detailansicht der ersten Firma mit allen
Mitarbeitern angezeigt.Completed 200 OK in 21ms (Views: 19.1ms | ActiveRecord: 1.1ms)