0

J'ai quelques problèmes pour faire une association entre 2 tables. je Les utilisateurs qui peuvent écrire des messagesRails 3.2 Associations et: include

Voici mon fichier de migration:

class LinkUsersAndPosts < ActiveRecord::Migration 

    def change 
    add_column :posts, :user_id, :integer 
    add_index :posts, :user_id 
    end 

end 

Mes modèles:

class Post < ActiveRecord::Base 
    attr_accessible :content, :title 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    attr_accessible :email, :login, :password, :password_confirmation, :rights 
    has_many :posts 
end 

Mon contrôleur:

class PostsController < ApplicationController 
    respond_to :json 

    def index 
    @posts = Post.includes(:user).all 
    respond_with @posts 
    end 

    def create 
    @post = Post.new(params[:post]) 
    @post.user = current_user 

    if @post.save 
     render json: @post, status: :created, location: @post 
    else 
     render json: @post.errors, status: :unprocessable_entity 
    end 
    end 
end 

Les messages est correctement créé , l'id_utilisateur est défini tout va bien. Le problème est lorsque je veux récupérer la liste des messages, y compris l'utilisateur, la liste des messages est récupérer, mais je n'ai aucune donnée sur l'utilisateur, sauf son ID.

Réponse:

[ 
    { 
    "content":"jksdjd", 
    "created_at":"2013-08-31T09:03:01Z", 
    "id":11,"title":"kdjs", 
    "updated_at":"2013-08-31T09:03:01Z", 
    "user_id":4 
    }, 
    { 
    "content":"tez2", 
    "created_at":"2013-08-31T09:16:45Z", 
    "id":12, 
    "title":"test2", 
    "updated_at":"2013-08-31T09:16:45Z", 
    "user_id":4 
    } 
] 

Répondre

0

Par défaut, une réponse JSON ne renverra aucun des modèles associés. Vous devez spécifier les autres modèles que vous souhaitez renvoyer. Donc, dans votre cas, vous pouvez le faire:

render json: @post => @post.to_json(:include => :user), status: :created, location: @post 

Voir aussi:

+0

Oh! Ma question était pour la réponse de l'index, mais le problème était que, donc je remplace 'respond_with @ posts' par:' render json: @ posts.to_json (: include =>: utilisateur) 'Et ça marche bien! Merci beaucoup ! –

+0

Ah, désolé, concentré trop sur ces rendus et n'a même pas regardé le: respond_to! Bonne chose, c'était le même type de problème :) Content de vous aider. – chucknelson