Header

  1. View current page

    지워지지 않는 마법처럼 신비한

Profile_img_60x60_09
5

Rails2.0 scaffold

참고자료

Ruby on Rails 2.0 scaffold 적용하기  : http://blog.empas.com/winchild/26464792

 

[ ] 프로젝트 만들기

D:\web>rails -d mysql phonebook

      create 
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/mocks/development
      create  test/mocks/test
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  public/.htaccess
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/performance/request
      create  script/process/reaper
      create  script/process/spawner
      create  script/process/inspector
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log

 

[ ] 모든것은 프로젝트 폴더내에서

D:\web>cd phonebook

 

[ ] 자기 입맞에 맞게 편집 : 안해도 됨.

D:\web\phonebook\config/database.yml

development:
  adapter: mysql
  encoding: utf8
  database: phonebook
  username: root
  password:
  host: localhost

 

[ ] Database만 생성 (3개 생성하쥐)

D:\web\phonebook>rake db:create:all
(in D:/web/phonebook)

 

[ ] people이라는 모델을 중심으로한 모든 scaffold 코드 생성

D:\web\phonebook>ruby script/generate scaffold People name:string phone_number:string note:text
      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/peoples
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      create  app/views/peoples/index.html.erb
      create  app/views/peoples/show.html.erb
      create  app/views/peoples/new.html.erb
      create  app/views/peoples/edit.html.erb
      create  app/views/layouts/peoples.html.erb
      create  public/stylesheets/scaffold.css

  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/people.rb
      create    test/unit/people_test.rb
      create    test/fixtures/peoples.yml
      create    db/migrate
      create    db/migrate/001_create_peoples.rb
      create  app/controllers/peoples_controller.rb
      create  test/functional/peoples_controller_test.rb
      create  app/helpers/peoples_helper.rb
       route  map.resources :peoples

 

[ ] 001_create_peoples.rb를 기준으로 Table생성

D:\web\phonebook>rake db:migrate
(in D:/web/phonebook)
== 1 CreatePeoples: migrating =================================================
-- create_table(:peoples)
   -> 0.3590s
== 1 CreatePeoples: migrated (0.3590s) ========================================

 

 

D:\web\phonebook>ruby script\server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  INT => stop (no restart).
** Mongrel 1.1.2 available at 0.0.0.0:3000
** Use CTRL-C to stop. 

 

D:\web\phonebook>ruby script/generate scaffold Group name:string

      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/groups
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      create  app/views/groups/index.html.erb
      create  app/views/groups/show.html.erb
      create  app/views/groups/new.html.erb
      create  app/views/groups/edit.html.erb
      create  app/views/layouts/groups.html.erb
   identical  public/stylesheets/scaffold.css
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/group.rb
      create    test/unit/group_test.rb
      create    test/fixtures/groups.yml
      exists    db/migrate
      create    db/migrate/002_create_groups.rb
      create  app/controllers/groups_controller.rb
      create  test/functional/groups_controller_test.rb
      create  app/helpers/groups_helper.rb
       route  map.resources :groups

 

[ ] 002_create_groups.rb 편집

class CreateGroups < ActiveRecord::Migration
  def self.up
    create_table :groups do |t|
      t.string :name

      t.timestamps
    end
   
    add_column :peoples, :group_id, :integer
  end

  def self.down
    remove_column :peoples, :group_id
    drop_table :groups
  end
end

 

[ ] 스키마 변경사항 반영

D:\web\phonebook>rake db:migrate
(in D:/web/phonebook)
== 2 CreateGroups: migrating ==================================================
-- create_table(:groups)
   -> 0.0000s
-- add_column(:peoples, :group_id, :integer)
   -> 0.0150s
== 2 CreateGroups: migrated (0.0150s) =========================================

 

[ ] 모델 연관관계 설정

class People < ActiveRecord::Base
  belongs_to :group
end

 

class Group < ActiveRecord::Base
  has_many :people
end

 

[ ] people 컨트롤러 수정

  def new
    @people = People.new
    @groups = Group.find(:all)
  end

  def edit
    @people = People.find(params[:id])
    @groups = Group.find(:all)
  end

[ ] view수정

index.html.erb

<th>그룹</th>

<td><%=h people.group.name %></td>

 

show.html.erb

<p>
  <b>그룹:</b>
  <%=h @people.group.name %>
</p>

 

new.html.erb

  <p>
    <b>그룹</b><br />
    <%= f.select("group_id", @groups.map {|g| [g.name, g.id]}) %>
  </p>

 

edit.html.erb

  <p>
    <b>그룹</b><br />
    <%= f.select("group_id", @groups.map {|g| [g.name, g.id]}) %>
  </p>

 

[ ] helper 코드로 변환된 html소스중 눈여겨 보아야 할것.

 

<%= f.select("group_id", @groups.map {|g| [g.name, g.id]}) %>

                                       ||

<select id="people_group_id" name="people[group_id]"><option value="3">축구</option>
<option value="4">야구</option>
<option value="5">농구</option></select>

 

<% form_for(@people) do |f| %>

                  ||

<form action="/peoples/5" class="edit_people" id="edit_people_5" method="post">

History

Last edited on 06/15/2008 06:22 by magic

Comments (0)

You must log in to leave a comment. Please sign in.