Skip to content

A really basic Ruby CRUD base example using Sinatra and SQLite.

Notifications You must be signed in to change notification settings

chrisbrocklesby/Ruby-CRUD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ruby-CRUD

A really basic Ruby CRUD base example using Sinatra and (DataMapper) SQLite...

###### Required #######
require 'sinatra'
require 'data_mapper'

###### Database Components #######
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/database.db")

class Post
  include DataMapper::Resource
  property :id, Serial
  property :title, String, :required => true
  property :slug, String, :required => true
  property :body, Text, :required => true
end

DataMapper.finalize.auto_upgrade!

###### 404 Error ######
not_found do
  status 404
  erb :"error/404"
end

###### 500 Error ######
error 500 do
  status 500
  erb :"error/500"
end

###### Home Route #######
get "/?" do
  @pageTitle = "Home Page"
  erb :home
end

###### Post Index Route #######
get "/post/?" do
  @pageTitle = "Post Index"
  @posts = Post.all # Get all posts.
  erb :"post/index"
end

###### New Post Routes #######
get "/post/new/?" do
  @pageTitle = "New Post"
  erb :"post/new"
end

post "/post/new/?" do
  data = Post.new
  data.title = params[:title]
  data.slug = params[:slug]
  data.body = params[:body]
  
  # Upload File
  if (params['file'])
    params['file'].length.times do |i|
      File.open('public/assets/uploads/' + params['file'][i][:filename], "w") do |f|
        f.write(params['file'][i][:tempfile].read)
      end
    end
  end

  if(data.save)
    redirect('/post')
  else
    status 500
  end 
end

###### Edit Post Routes #######
get "/post/edit/:id/?" do
  @pageTitle = "Edit Post"
  @post = Post.get(params[:id]) # Get post by ID.
  erb :"post/edit"
end

post "/post/edit/:id/?" do
  data = Post.get(params[:id]).update(
    :title => params[:title], 
    :slug => params[:slug], 
    :body => params[:body]
  )
  
  if(data)
    redirect('/post')
  else
    status 500
  end 
end

###### View Post Route #######
get "/post/:id/?" do
  @pageTitle = "View Post"
  @post = Post.get(params[:id]) # Get post by ID.
  erb :"post/view"
end

###### Delete Post Route #######
get "/post/delete/:id/?" do
  Post.get(params[:id]).destroy # Get post by ID then delete.
  redirect('/post')
end

About

A really basic Ruby CRUD base example using Sinatra and SQLite.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published