Report abuse

class Posts < Application
  # merb controller provide :html by default
  # when you see render @post  merb will look 
  # for a template  foo.html.erb or foo.erb
  # based on the accept header and serve that directly. If there
  # is not template for that content type then merb will call
  # to_json, to_xml or to_yaml on the passed in object based
  # on the accept header or format.
  provides :xml, :js, :yaml

  def index
    @posts = Post.find(:all)
    render @posts
  end

  def show(id)
    @post = Post.find(id)
    render @post
  end

  def new(post)
    only_provides :html
    @post = Post.new(post)
    render
  end

  def create(post)
    @post = Post.new(post)
    if @post.save
      redirect url(:post, @post)
    else
      render :action => :new
    end
  end

  def edit(id)
    only_provides :html
    @post = Post.find(id)
    render
  end

  def update(id, post)
    @post = Post.find(id)
    if @post.update_attributes(post)
      redirect url(:post, @post)
    else
      raise BadRequest
    end
  end

  def destroy(id)
    @post = Post.find(id)
    if @post.destroy
      redirect url(:posts)
    else
      raise BadRequest
    end
  end
end