piano piano sto leggendo il libro agile web development with rails ma mi
pare di allontanarmi sempre più da quello che dovrei fare
tra partial e simboli mi sto perdendo e non riesco neanche a fare (beh a
meno che non è realmente difficile) una vista con oggetti “composti”…
esempio?
un utente che ha tra i suoi parametri nome, cognome e per esempio
indirizzo (che è una classe a parte)
ho fatto le associazioni e creato le viste… per lo show non ho
moltissimi problemi, che invece vengono con l’edit, il destroy e la
new…
credo che il problema sia nei controller… diciamo che mi basterebbe
sapere come manipolare nei form i campi di tipo Address gestiti nelle
pagine di inserimento, modifica e distruzione di User che ha un campo
Address…
ecco il mio ultimo codice… ovviamente spara errori a raffica…
il modello User has_one :address e Address belongs_to :user
Vista per il new:
Inserisci un nuovo utente
<% form_for(@user) do |f| %>
<%= f.error_messages %>
<%= f.label :nick %>
<%= f.text_field :nick %>
<%= f.label :nome %>
<%= f.text_field :nome %>
<%= f.label :cognome %>
<%= f.text_field :cognome %>
<%= f.label :email %>
<%= f.text_field :email %>
<% f.fields_for @address do |address_fields| %>
via : <%= address_fields.text_field :indirizzo %>
citta: <%= address_fields.text_field :citta %>
<%# end %>
<% end %>
<%= f.submit 'Crea' %>
<% end %><%= link_to ‘Indietro’, users_path %>
Vista per l’edit (ci sono un sacco di cose commentate… sono le
prove…)
Modifica utente
<% form_for(@user) do |f| %>
<%= f.error_messages %>
<%= f.label :nome %>
<%= f.text_field :nome %>
<%= f.label :cognome %>
<%= f.text_field :cognome %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :nick %>
<%= a= :nick
#[email protected]
#[email protected]
%>
lll
<%= f.text_field :nick %>
<%# form_for @person, :url => { :action => “update” } do |person_form|
%>
<%# person_form.fields_for :address do |address_fields| %>
<% f.fields_for :address do |address_fields| %>
Street : <%= address_fields.text_field :indirizzo %>
Zip code: <%= address_fields.text_field :citta %>
<%# end %>
<% end %>
<%# %>
<%#= f.label :indirizzo %>
<%#= f.text_field :address %>
<%#
<%# %>
<%#= f.label :citta %>
<%#= f.text_field :citta %>
<%#
<p>
<b>Indirizzo:</b>
<%= @user.address.indirizzo if @user.address!=nil%>
<b>-</b>
<%= @user.address.citta if @user.address!=nil%>
<%#= t.label :@user.address.citta %>
<%#= @addr.citta %>
<%# for @address in @user.address %>
<%#= error_messages_for :address %>
<%# fields_for “address[]” do |f| %>
<%#*
<%= f.text_field :name %>
%><%# end %>
<%# end %>
<fieldset>
Territorio di competenza
<%# fields_for :address do |t| %>
<%# %>
<%#= t.label :carica %>
<%#= t.text_field :carica%>
<%#
<%#= @address=@address[0] %>
<%#= @address %>
<%# %>
<%#= t.label :indirizzo %>
<%#= t.text_field :indirizzo%>
<%#
<%# %>
<%#= t.label :citta %>
<%#= t.text_field :citta%>
<%#
<%# end %>
<%= f.submit 'Aggiorna' %>
<% end %><%= link_to ‘Mostra’, @user %> |
<%= link_to ‘Indietro’, users_path %>
Controller:
class UsersController < ApplicationController
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end
def show
@user = User.find(params[:id])
@address = Address.find(:all, :conditions => [‘user_id = ?’,
@user.id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end
def new
@user = User.new
@address = Address.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
GET /users/1/edit
def edit
@user = User.find(params[:id])
@address = @user.address
@address = Address.find_by_sql("select * from users, addresses " + "
where user_id = users.id ")
end
def create
@user = User.new(params[:user])
@address = Address.new(params[:address])
@address = @user.address[0].build(params[:address])
User.transaction do
@address.save!
@user.address = @address
@user.save!
redirect_to :action => :show, :id => @user
end
rescue ActiveRecord::RecordInvalid => e
@address.valid? # force checking of errors even if products failed
render :action => :new
#end
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'Utente creato con
successo’) }
format.xml { render :xml => @user, :status => :created,
:location => @user }
else
format.html { render :action => “new” }
format.xml { render :xml => @user.errors, :status =>
:unprocessable_entity }
end
end
end
def update
@user = User.find(params[:id])
@address = @user.address
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to(@user, :notice => 'Modifica effettuata
con successo.’) }
format.xml { head :ok }
else
format.html { render :action => “edit” }
format.xml { render :xml => @user.errors, :status =>
:unprocessable_entity }
end
end
end
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to(users_url) }
format.xml { head :ok }
end
end
end
grazie a tutti voi che mi sopportate