Relation 1-N - le champ _id ne se sauve pas?

Hello,

en tant que débutant rails, j’ai créé 2 bases de données avec une
relation 1-N, avec une table “tasks” et une table “categories”, j’ai
fait la relation en ajoutant dans task.rb “belongs_to :category” et dans
category.rb “has_many :tasks”; j’ai donc naturellement un champ
"category_id qui m’a permis d’adapter le formulaire “new” de tasks afin
de pouvoir directement choisir une catégorie quand je crée une tâche. La
création de la tâche se passe bien mais la catégorie ne s’enregistre
pas?? Quand je regarde dans la DB, le champ category_id est bien présent
mais nul…

Quelqu’un aurait-il une idée de mon erreur?

merci,

Montre voir le code du modèle et du contrôleur ?..

Michel B. wrote:

Montre voir le code du modèle et du contrôleur ?..

Voici mon code:

Les controllers:

Controller categories_controller.rb (placé dans un dossier admin)
class Admin::CategoriesController < Admin::AdminController

def index
@categories= Category.find(:all)
@tasks = Task.find(:all)

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @categories}
end

end

Controller tasks_controller.rb (dans dossier admin)
class Admin::TasksController < Admin::AdminController

def index
@tasks = Task.find(:all)
@categories = Category.find(:all)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @tasks}
end
end

LES MODELES

Modele task.rb
class Task< ActiveRecord::Base
belongs_to :category
end

Modele Category.rb
class Category< ActiveRecord::Base
has_many :tasks
end

Vue “new” de task:
<%= error_messages_for :task%>

<% form_for([:admin,@task]) do |f| %>

category
<%= select('task','category_id',@categories.collect{|p|[p.title,p.id]},{:include_blank => true})%>

Subtitle
<%= f.text_area :subtitle %>

<%= f.submit "Create" %>

<% end %>

Je ne crois pas que ce soit ça car tu as mis ‘task’ comme premier
argument.
Le problème se situe peut-être dans l’action new ou create…

Peux-tu les envoyer aussi?

On 16 May 2008, at 18:48, Thomas GALIBERT wrote:

format.html # index.html.erb

respond_to do |format|
end
<% form_for([:admin,@task]) do |f| %>

Posted via http://www.ruby-forum.com/.


Jean-Baptiste E.
Belighted.com | Web 2.0 Consulting & Training
Email : [email protected] | Phone: +32 486 377593

tu as simplement oublié le “f” devant le select de ton formulaire.

Le 16 mai 08 à 18:46, san 1981 a écrit :

Ca ne résoudra probablement pas ton problème mais si tu ajoute f, tu
dois supprimer le premier argument du select : “task”.

On 16 May 2008, at 21:09, san 1981 wrote:

J’ai essayé en ajoutant le “f.” mais j’obtiens des messages d’erreur?

Posted via http://www.ruby-forum.com/.


Jean-Baptiste E.
Belighted.com | Web 2.0 Consulting & Training
Email : [email protected] | Phone: +32 486 377593

Jean-Baptiste E. wrote:

Je ne crois pas que ce soit �a car tu as mis ‘task’ comme premier
argument.
Le probl�me se situe peut-�tre dans l’action new ou create…

Peux-tu les envoyer aussi?

Dans l’action create, je n’ai rien modifié,
voici l’action new de tasks

def new
@task = Task.new
@categories = category.find(:all)

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @task}
end

end

J’ai essayé en ajoutant le “f.” mais j’obtiens des messages d’erreur?

Jean-Baptiste E. wrote:

Ca ne résoudra probablement pas ton problème mais si tu ajoute f, tu
dois supprimer le premier argument du select : “task”.

Merci pour l’aide,

Effectivement je n’ai plus de messages d’erreur mais la catégorie ne
s’enregistre toujours pas…

On 16 mai, 18:46, san 1981 removed_email_add[email protected] wrote:

Michel B. wrote:

Montre voir le code du modèle et du contrôleur ?..

Voici mon code:

Les controllers:

Controller categories_controller.rb (placé dans un dossier admin)
class Admin::CategoriesController < Admin::AdminController

end

ça n’a peut-etre rien a voir avec ton problème, mais mettre un
controlleur dans un namespace est une très mauvaise idée. A ma
connaissance rails ne gère pas cela très bien.

Si tu le fait juste pour obtenir une url de la forme /admin/
categories/
il faut mieux utilisé un routage adequate

map.namespace :admin do |admin|
admin.resources :categories
end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs