Make_resourceful plugin

Ciao a tutti,

se state lavorando con rest, vi consiglio caldaemente di vedervi questo
screencast:

http://railscasts.com/episodes/92

Ho provato varie alternative ma alla fine mi sono appoggiato a questo
plugin e lo sto utilizzando alla grande…

Ho solo un dubbio, io oggi scrivo lo stesso identico codice in tutti i
controller es.:

class CompaniesController < ApplicationController
make_resourceful do
actions :all

response_for :show, :new do |format|
  format.html
  format.xml  { render :xml => current_object.to_xml }
end

response_for :index do |format|
  format.html
  format.xml  { render :xml => current_objects.to_xml }
end

response_for :create, :update do |format|
  format.html { redirect_to objects_path }
  format.xml  { head :ok }
end

response_for :create_fails, :update_fails do |format|
  format.html { render :action => 'new' }
  format.xml  { render :xml => current_object.errors, :status =>

:unprocessable_entity }
end

response_for :destroy do |format|
  format.html { redirect_to objects_path }
  format.xml  { head :ok }
end

end
end

poi altro controller con dentro lo stesso codice identico, l’unica cosa
che cambia è il belongs_to che indica a SitesController che è figlio di
Company:

class SitesController < ApplicationController
make_resourceful do
actions :all
belongs_to :company

response_for :show, :new do |format|
  format.html
  format.xml  { render :xml => current_object.to_xml }
end

response_for :index do |format|
  format.html
  format.xml  { render :xml => current_objects.to_xml }
end

response_for :create, :update do |format|
  format.html { redirect_to objects_path }
  format.xml  { head :ok }
end

response_for :create_fails, :update_fails do |format|
  format.html { render :action => 'new' }
  format.xml  { render :xml => current_object.errors, :status =>

:unprocessable_entity }
end

response_for :destroy do |format|
  format.html { redirect_to objects_path }
  format.xml  { head :ok }
end

end
end

Alla faccia del DRY !!!

Ho provato a creare un controller di base (BaseController) in cui metto
il metodo make_resourceful con tutte le sue direttive e poi
CompaniesController che estende BaseController ma non ci riesco, in
CompaniesController ottengo il seguente errore:

NoMethodError (undefined method `make_resourceful’ for
BaseController:Class):

|app/controllers/base_controller.rb:7|
|app/controllers/companies_controller.rb:1|
||
Qualche idea ?
||
PS: sto facendo una discreta esperienza su Rest / nested resources,
aiuto volentieri se ne avete bisogno…
||

Ciao a tutti,

se state lavorando con rest, vi consiglio caldaemente di vedervi questo
screencast:

http://railscasts.com/episodes/92

Ho provato varie alternative ma alla fine mi sono appoggiato a questo
plugin e lo sto utilizzando alla grande…
http://lists.ruby-it.org/mailman/listinfo/ml

Tra le varie alternative hai provato anche

http://jamesgolick.com/2007/10/19/introducing-resource_controller-focus-on-what-makes-your-controller-special

È un po’ meglio IMO. ha anche un generator…

giovanni lion ha scritto:

http://lists.ruby-it.org/mailman/listinfo/ml

A dire il vero ero partito con resource_controller ma quando è stato il
momento di eseguire render :xml => current_objects.to_xml non so per
quale motivo voleva a tutti i costi un template .xml.erb e non avevo
alcuna intenzione di creare 2 template (index/show) per ogni entità,
quindi l’ho scartato… (make_resourceful esegue il render dell’xml
diretto senza che sia necessario passare obbligatoriamente per un
template)…

BTW: anche make_resourceful ha il suo generator e al momento gestisce
controller con belongs_to polimorfici e associazioni has_one (man mano
che passa il tempo mi sembra che siano sempre + simili…)