24-09-2011, 03:35 PM
(Modification du message : 02-10-2011, 08:52 PM par Sephi-Chan.)
Bonjour!
Voici mon soucis, j'ai fait des associations d'active record à l'aide de has_many, has_one et belongs_to
Je me retrouves avec une architecture d'associations sur trois étage qui ressembles dans ma tête à ça(de gauche à droite, de parent à enfant):
User > City > Ants.
Le premier objet qui est créé est User (à la connexion, en utilisant Authlogic). Et une fois l'utilisateur connecté, j'aimerais créé l'objet City via un formulaire. J'ai donc essayer quelques trucs, en vain:
Le problème est que rien n'est enregistré dans la base de donnée, et une erreur m'es renvoyé dû au fait que l'objet current_user.city est inexistant dans l'action show.
EDIT: après une bonne après-midi de galère, j'ai enfin trouvé la solution =) la méthode à déquat était en fait current_user.crate_city à la place de current_user.city.create
Voici mon soucis, j'ai fait des associations d'active record à l'aide de has_many, has_one et belongs_to
Code :
class User < ActiveRecord::Base
has_one :city
end
class City < ActiveRecord::Base
belongs_to :user
has_many :ants
end
class Ant < ActiveRecord::Base
belongs_to :city
end
User > City > Ants.
Le premier objet qui est créé est User (à la connexion, en utilisant Authlogic). Et une fois l'utilisateur connecté, j'aimerais créé l'objet City via un formulaire. J'ai donc essayer quelques trucs, en vain:
class User::CitiesController < User:anelController
def index
render :action => 'show'
end
def new
@city = City.new
end
def create
@city = current_user.city.create(params[:city])
respond_to do |format|
if @city.save
format.html { redirect_to [:user, @city], notice: 'Category was successfully created.' }
format.json { render json: @city, status: :created, location: @city }
else
format.html { render action: "show" }
format.json { render json: @city.errors, status: :unprocessable_entity }
end
end
end
def show
@city = current_user.city
end
end
le def index n'est utilisé que pour que l'instruction form_for @city fonctionnes. Il renvois à l'action show pour afficher l'objet city du current_user.Le problème est que rien n'est enregistré dans la base de donnée, et une erreur m'es renvoyé dû au fait que l'objet current_user.city est inexistant dans l'action show.
EDIT: après une bonne après-midi de galère, j'ai enfin trouvé la solution =) la méthode à déquat était en fait current_user.crate_city à la place de current_user.city.create