Question

Salut, je suis en train de construire une petite application de forum avec des rails (3). Je suis assez nouveau dans les rails la matière et je me suis coincé avec les sujets.

J'ai 2 modèles (sujet et topic_reply)

modèle sujet:

class Topic < ActiveRecord::Base
  belongs_to :board
  belongs_to :user
  has_many :topic_replies, :dependent => :destroy

  TOPIC_TYPES = ["Non-support", "Question"]
  validates :topic_type, :inclusion => TOPIC_TYPES
end

Modèle sujet de réponse:

class TopicReply < ActiveRecord::Base
  belongs_to :topic
  belongs_to :user
end

Quand je crée un tout sujet affiche bien sauf pour les topic_replies (tous les postes dans le sujet)

La raison en est. Mon objet topic_reply enregistre tout correctement, sauf qu'il ne enregistrez pas l'topic_id dans l'objet et donc dans ma db

voici une partie de mon contrôleur de sujet pour créer un sujet:

 # GET /topics/new
  # GET /topics/new.xml
  def new
    @topic       = Topic.new
    @topic_reply = @topic.topic_replies.build

    respond_to do |format|
      format.html # new.html.erb
    end
  end

  # POST /topics
  # POST /topics.xml
  def create
    @topic                 = Topic.new(params[:topic])
    @topic.id_board        = @board.id

    @topic_reply  = @topic.topic_replies.build(params[:topic_reply])
    @topic_reply.id_topic  = @topic.id
    @topic_reply.id_poster = User.first.id

    respond_to do |format|
      if @topic.save && @topic_reply.save
        format.html { redirect_to(topic_path("#{@board.name.parameterize}-#{@board.id}", "#{@topic.title.parameterize}-#{@topic.id}")) }    
      else
        format.html { render :action => "new" }
      end
    end
  end

que quelqu'un a une idée de ce que je fais mal si je trop posté moins d'informations me faire savoir que je vais ajouter ce que vous avez besoin.

Merci à l'avance

Était-ce utile?

La solution

Vos clés étrangères devrait être nommé topic_id, poster_id et board_id comme ceux-ci sont des valeurs par défaut dans Rails. Vous n'êtes pas définir des colonnes non par défaut dans vos modèles, de sorte que le code actuel ne peut pas fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top