Skip to content

Instantly share code, notes, and snippets.

@petervandenabeele
Created January 9, 2012 17:00
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 petervandenabeele/1583881 to your computer and use it in GitHub Desktop.
Save petervandenabeele/1583881 to your computer and use it in GitHub Desktop.
Rails scaffold controller template for XML
RAILS_ROOT/lib/templates/rails/scaffold_controller$ cat controller.rb
<% module_namespacing do -%>
class <%= controller_class_name %>Controller < ApplicationController
# GET <%= route_url %>
# GET <%= route_url %>.xml
def index
@<%= plural_table_name %> = <%= orm_class.all(class_name) %>
respond_to do |format|
format.html # index.html.erb
format.xml { render <%= key_value :xml, "@#{plural_table_name}" %> }
end
end
# GET <%= route_url %>/1
# GET <%= route_url %>/1.xml
def show
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
respond_to do |format|
format.html # show.html.erb
format.xml { render <%= key_value :xml, "@#{singular_table_name}" %> }
end
end
# GET <%= route_url %>/new
# GET <%= route_url %>/new.xml
def new
@<%= singular_table_name %> = <%= orm_class.build(class_name) %>
respond_to do |format|
format.html # new.html.erb
format.xml { render <%= key_value :xml, "@#{singular_table_name}" %> }
end
end
# GET <%= route_url %>/1/edit
def edit
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
end
# POST <%= route_url %>
# POST <%= route_url %>.xml
def create
@<%= singular_table_name %> = <%= orm_class.build(class_name, "params[:#{singular_table_name}]") %>
respond_to do |format|
if @<%= orm_instance.save %>
format.html { redirect_to @<%= singular_table_name %>, <%= key_value :notice, "'#{human_name} was successfully created.'" %> }
format.xml { render <%= key_value :xml, "@#{singular_table_name}" %>, <%= key_value :status, ':created' %>, <%= key_value :location, "@#{singular_table_name}" %> }
else
format.html { render <%= key_value :action, '"new"' %> }
format.xml { render <%= key_value :xml, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> }
end
end
end
# PUT <%= route_url %>/1
# PUT <%= route_url %>/1.xml
def update
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
respond_to do |format|
if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %>
format.html { redirect_to @<%= singular_table_name %>, <%= key_value :notice, "'#{human_name} was successfully updated.'" %> }
format.xml { head :ok }
else
format.html { render <%= key_value :action, '"edit"' %> }
format.xml { render <%= key_value :xml, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> }
end
end
end
# DELETE <%= route_url %>/1
# DELETE <%= route_url %>/1.xml
def destroy
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
@<%= orm_instance.destroy %>
respond_to do |format|
format.html { redirect_to <%= index_helper %>_url }
format.xml { head :ok }
end
end
end
<% end -%>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment