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)