Skip to content

Commit

Permalink
step 3 - добавление DataMapper - ORM для работы с базой данных, созда…
Browse files Browse the repository at this point in the history
…ём модель, прописываем поля, инициализируем на sqlite3 БД, добавляем создание записи в роуте создания тодо, получение списка элементов в роуте просмотра страницы, в шаблоне отображения - отображение списка тодо элементов.
  • Loading branch information
nemilya committed Jul 12, 2012
1 parent 44c1ba7 commit 476cb44
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -0,0 +1 @@
todos.db
39 changes: 36 additions & 3 deletions app.rb
Expand Up @@ -3,9 +3,40 @@
require "rubygems"
require "sinatra"

require 'dm-core'
require 'dm-migrations'

# Таблица
#
# todos
# - id [integer]
# - todo [string]
# - is_done [boolean]

class Todos
include DataMapper::Resource
property :id, Serial, :key => true
property :todo, String
property :is_done, Boolean, :default=>false
end

# для тестовых задач - настраиваем на БД Sqlite3
conn_string="sqlite3://#{Dir.pwd}/todos.db"

# инициализируем DataMapper на адаптер Базы Данных
DataMapper.setup(:default, conn_string)

# обработка моделей
DataMapper.finalize

# автоматическая миграция, если
# изменились поля в модели
DataMapper.auto_upgrade!


# отображение страницы
get "/" do
@todos = Todos.all(:is_done => false, :order => [:id.desc])
erb :index
end

Expand All @@ -14,6 +45,8 @@
post "/add" do
p "add route"
p params[:text]
todo = Todos.new(:todo => params[:text])
todo.save
redirect "/"
end

Expand Down Expand Up @@ -63,9 +96,9 @@

<form action="/done" method="post">
// список todo пунктов, снизу вверх (по id)
<input type="checkbox" name="ids[]" value="2"> [текст todo1]
<input type="checkbox" name="ids[]" value="1"> [текст todo2]
...
<% @todos.each do |todo| %>
<input type="checkbox" name="ids[]" value="<%= todo.id %>"> <%= todo.todo %>
<% end %>
<input type="submit" value="Выполнены">
</form>

Expand Down

0 comments on commit 476cb44

Please sign in to comment.