02-11-2011, 09:49 AM
(Modification du message : 02-11-2011, 04:17 PM par Sephi-Chan.)
Bonjour à tous (et surtout à Sephi iffle
Je dois vraiment être une quiche et faire (encore) n'importe quoi...
donc tout d'abord un peu de code :
La vue
Le modèle
Je passe sur le javascript (auto_completion) qui me remplie le champ "receiver".
Quand on remplit correctement le formulaire, tout se passe bien. par contre si je remplis le champ receiver et pas le reste, le formulaire n'est pas validé et au moment de réafficher le formulaire, le champ receiver vaut quelque chose du style #<User:0x286b870>! Alors, je comprends bien pourquoi mais je ne trouve pas comment le corriger... (J'ai fait pas mal de test en bidouillant mais rien n'a réellement fonctionné)
Je dois vraiment être une quiche et faire (encore) n'importe quoi...
donc tout d'abord un peu de code :
La vue
%h1= "Nouveau Message"
= form_for @message do |f|
%p.double
= f.label :receiver
= f.text_field :receiver
= show_errors_message(@message.errors[:receiver])
%p.double
= f.label :title
= f.text_field :title
= show_errors_message(@message.errors[:title])
%p.double
= f.label :body
= f.text_area :body
= show_errors_message(@message.errors[:body])
= f.submit
Le modèle
class Message < ActiveRecord::Base
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
belongs_to :receiver, :class_name => "User", :foreign_key => "receiver_id"
validates_presence_of :author, :receiver, :title, :body
end
et enfin, la méthode create de mon controlleur
def create
username = params[:message][:receiver]
params[:message][:receiver] = User.find_by_username(username)
@message = Message.new params[:message]
@message.author = current_user
if @message.save
redirect_to messages_path
else
render 'new'
end
end
Je passe sur le javascript (auto_completion) qui me remplie le champ "receiver".
Quand on remplit correctement le formulaire, tout se passe bien. par contre si je remplis le champ receiver et pas le reste, le formulaire n'est pas validé et au moment de réafficher le formulaire, le champ receiver vaut quelque chose du style #<User:0x286b870>! Alors, je comprends bien pourquoi mais je ne trouve pas comment le corriger... (J'ai fait pas mal de test en bidouillant mais rien n'a réellement fonctionné)