2011-05-26 2 views
0

Après avoir résolu ma question par Matteo Alessani dans Rails - Id can't be found in Forms, j'ai remarqué que mon formulaire ne sauve pas les champs que je passe.Rails - Formulaires agissant Bizarre: ne pas enregistrer aucun text_field

Je copie ici tout le morceau de code que j'ai de l'autre question:

Routes:

resources :honors 

Modèle:

class Honor < ActiveRecord::Base 
    belongs_to :person, :class_name => 'Person', :foreign_key => "person_id" 
    belongs_to :honored, :class_name => 'Person', :foreign_key => "honored_id" 
    belongs_to :group, :class_name => 'Group', :foreign_key => "group_id" 

Controller:

def new 
    @person = Person.find(params[:person]) 
    @honored = Person.find(params[:honored]) 
    @group = Group.find(params[:group_id]) 
    @honor = Honor.new 
end 


def create 
    @person = Person.find(current_person) 
    @honor = Honor.save(:group_id => params[:honor][:group], 
      :person_id => params[:honor][:person], 
      :honored_id => params[:honor][:honored]) 
if @honor.valid? 
    flash[:success] = "Honor created." 
    redirect_to (:back) 
else 
    redirect_to (:back) 
end 
end 

Dans la vue:

<% @asked_groupmembership.each do |agm| %> 
<%= link_to "Create Honor", new_honor_path(:group_id => @group.id, 
:person => current_person.id, :honored => agm.member.id) %> 

Mes formes:

<% form_for @honor do |f| %> 

<%= f.hidden_field :group_id, :value => @group.id %> 
<%= f.hidden_field :person, :value => current_person.id %> 
<%= f.hidden_field :honored, :value => @honored.id %> 

<div class="field"> 
<%= f.label :texto %><br /> 
<%= f.text_field :texto %> 
</div> 

Et l'erreur est que je peux obtenir les ID de group et person et honored un, mais rien que je tape dans les formes (mes attributs sont en portugais donc je ne traduirai pas):

INSERT INTO "honors" ("group_id", "person_id", "honor_id", "texto", "nota", 
"nivel_habilidade", "comprometimento", "tempo_demora", 
"criatividade", "organicazao", "comunicacao", "trabalho_grupo", "created_at", 
"updated_at") VALUES (39, 2, 44, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL, '2011-05-26 12:58:56.433510', '2011-05-26 12:58:56.433510') 
RETURNING "id". 

Remarque: les paramètres dans log sont avec les valeurs.

Merci!

Répondre

2

Vous avez erreur dans le contrôleur

def create 
    @person = Person.find(current_person) 
    @honor = Honor.new(params[:honor]) 
    if @honor.save 
    flash[:success] = "Honor created." 
    redirect_to (:back) 
    else 
    redirect_to (:back) 
    end 
end 
+0

j'ai eu une erreur même bizarre. Je vais ajouter un morceau que j'ai oublié sur le code qui montre mon nouvel appel. L'erreur est: 'Group (# 35572728) attendu, a obtenu la chaîne (# 3110088) app/controllers/honors_controller.rb: dans 'nouveau' app/controllers/honors_controller.rb: 25: dans 'create'' – Zeroz

+0

est votre 25ème ligne? – arnep

+0

Bonjour. C'est '@honor = Honor.new (params [: honneur])' – Zeroz