Skip to content

Instantly share code, notes, and snippets.

@sebastjan-hribar
Created April 28, 2014 13:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebastjan-hribar/11371787 to your computer and use it in GitHub Desktop.
Save sebastjan-hribar/11371787 to your computer and use it in GitHub Desktop.
require 'camping'
Camping.goes :Test
module Test::Models
class Post < Base
end
class BasicFields < V 1.0
def self.up
create_table Post.table_name do |t|
t.string :title
end
end
def self.down
drop_table Post.table_name
end
end
end
module Test::Controllers
class Index
def get
@posts = Post.find(:all)
render :index
end
end
class PostNew
def get
@post = Post.new
render :new
end
def post
@post = Post.create(title: input.title)
redirect PostN, @post
end
end
class PostN
def get(id)
@post = Post.find(id)
render :view
end
end
class PostNEdit
def get(id)
@post = Post.find(id)
render :edit
end
def post(id)
@post = Post.find(id)
@post.update_attribute(:title, input.title)
redirect PostN, @post
end
end
end
module Test::Views
def layout
html do
head do
meta charset: "UTF-8"
title 'test'
end
body do
self << yield
end
end
end
def index
p "All posts"
@posts.each do |post|
ul do
li do
a post.title, href: R(PostN, post)
end
end
end
a "New post", href: R(PostNew)
end
def new
_form(action: R(PostNew))
end
def edit
_form(action: R(PostNEdit, @post))
end
def _form(route)
form route, method: 'post' do
label 'Title: ', for: 'title'
input type: 'text', name: 'title',
value: @post.title
input type: 'submit', value: 'Submit'
end
end
def view
h1 "Display post"
a "Home", href: R(Index)
hr
@post.attributes.each do |attribute|
p attribute
end
a "Edit", href: R(PostNEdit, @post)
end
end
def Test.create
Test::Models.create_schema
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment