I've made a little improvement to my development process, in such a way that the scaffolding i do for creating the web services I later use for my flex client are generated in their final form without the need to adjust them.
What i did was make some changes to the controller scaffold template.
The controller.rb template file is located at: [Ruby Home]\lib\ruby\gems\1.8\gems\rails-2.3.4\lib\rails_generator\generators\components\scaffold\templates
Backup the original (or pick it up from here).
Download the modified template
The Template should end up looking like:
class <%= controller_class_name %>Controller < ApplicationController
# GET /<%= table_name %>
# GET /<%= table_name %>.xml
def index
@<%= file_name %> = <%= class_name %>.all
render :xml => @<%= file_name %>
end
# GET /<%= table_name %>/1
# GET /<%= table_name %>/1.xml
def show
@<%= file_name %> = <%= class_name %>.find(params[:id])
render :xml => @<%= file_name %>
end
# GET /<%= table_name %>/new
# GET /<%= table_name %>/new.xml
def new
@<%= file_name %> = <%= class_name %>.new
render :xml => @<%= file_name %>
end
# GET /<%= table_name %>/1/edit
def edit
@<%= file_name %> = <%= class_name %>.find(params[:id])
render :xml => @<%= file_name %>
end
# POST /<%= table_name %>
# POST /<%= table_name %>.xml
def create
@<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>])
if @<%= file_name %>.save
render :xml => {:notice => '<%= class_name %> was successfully created.'}
else
render :xml => {:notice => @<%= file_name %>.errors}
end
end
# PUT /<%= table_name %>/1
# PUT /<%= table_name %>/1.xml
def update
@<%= file_name %> = <%= class_name %>.find(params[:id])
if <%= file_name %>.update_attributes(params[:<%= file_name %>])
render :xml => {:notice => '<%= class_name %> was successfully updated.'}
else
render :xml => {:notice => @<%= file_name %>.errors}
end
end
# DELETE /<%= table_name %>/1
# DELETE /<%= table_name %>/1.xml
def destroy
@<%= file_name %> = <%= class_name %>.find(params[:id])
@<%= file_name %>.destroy
render :xml => {:notice => '<%= class_name %> was successfully deleted.'}
end
end
Showing posts with label scaffold. Show all posts
Showing posts with label scaffold. Show all posts
Wednesday, October 20, 2010
Friday, September 24, 2010
Flex For Rails Scaffold
I’ve written a little component for connecting flex with rails scaffold as close as possible.
Step 1: Create a scaffold for Card
Within your rails application run the script:
(data types with Ruby and mySQL)
Step 2: Change the Card controller
Edit the Card Controller found at: myApp/app/controllers/cards_controller.rb and remove all view elements. this will make the controller omit pure XML structures
should result with the controller looking like:
class CardsController < ApplicationController
# GET /cards
# GET /cards.xml
def index
@cards = Card.all
render :xml => @cards
end
# GET /cards/1
# GET /cards/1.xml
def show
@card = Card.find(params[:id])
render :xml => @card
end
# GET /cards/new
# GET /cards/new.xml
def new
@card = Card.new
render :xml => @card
end
# GET /cards/1/edit
def edit
@card = Card.find(params[:id])
render :xml => @card
end
# POST /cards
# POST /cards.xml
def create
@card = Card.new(params[:card])
if @card.save
render :xml => {:notice => 'Card was successfully updated.'}
else
render :xml => {:notice => @card.errors}
end
end
# PUT /cards/1
# PUT /cards/1.xml
def update
@card = Card.find(params[:id])
if @card.update_attributes(params[:card])
render :xml => {:notice => 'Card was successfully updated.'}
else
render :xml => {:notice => @card.errors}
end
end
# DELETE /cards/1
# DELETE /cards/1.xml
def destroy
@card = Card.find(params[:id])
@card.destroy
render :xml => {:notice => 'Card was successfully updated.'}
end
end
Step 3: Client Side
To connect to the Rails server use an intermediate adapter called ActiveResourceClient.as
For testing, use the ServiceTester.mxml
good luck
Step 1: Create a scaffold for Card
Within your rails application run the script:
./script/generate scaffold card id:integer timeStamp:timestamp data:text
(data types with Ruby and mySQL)
Step 2: Change the Card controller
Edit the Card Controller found at: myApp/app/controllers/cards_controller.rb and remove all view elements. this will make the controller omit pure XML structures
should result with the controller looking like:
class CardsController < ApplicationController
# GET /cards
# GET /cards.xml
def index
@cards = Card.all
render :xml => @cards
end
# GET /cards/1
# GET /cards/1.xml
def show
@card = Card.find(params[:id])
render :xml => @card
end
# GET /cards/new
# GET /cards/new.xml
def new
@card = Card.new
render :xml => @card
end
# GET /cards/1/edit
def edit
@card = Card.find(params[:id])
render :xml => @card
end
# POST /cards
# POST /cards.xml
def create
@card = Card.new(params[:card])
if @card.save
render :xml => {:notice => 'Card was successfully updated.'}
else
render :xml => {:notice => @card.errors}
end
end
# PUT /cards/1
# PUT /cards/1.xml
def update
@card = Card.find(params[:id])
if @card.update_attributes(params[:card])
render :xml => {:notice => 'Card was successfully updated.'}
else
render :xml => {:notice => @card.errors}
end
end
# DELETE /cards/1
# DELETE /cards/1.xml
def destroy
@card = Card.find(params[:id])
@card.destroy
render :xml => {:notice => 'Card was successfully updated.'}
end
end
Step 3: Client Side
To connect to the Rails server use an intermediate adapter called ActiveResourceClient.as
For testing, use the ServiceTester.mxml
good luck
Subscribe to:
Posts (Atom)