简单嵌套属性关联问题Ruby on Rails

问题描述:

我有两个模型,一个用户模型和一个头发模型。我创建了一个成功地允许用户提交并保存他们的姓名,用户模型中的位置和头发模型中的头发颜色的表单。简单嵌套属性关联问题Ruby on Rails

我似乎无法解决的是如何在我的视图中检索用户的头发颜色?

头发是目前由视图显示用户在我的路线和当前结果我的嵌套属性为Rosie Ealing #<Hair:0x4d5e078>

可以提供真正将不胜感激任何帮助。

用户模型

class User < ActiveRecord::Base 
    has_one :hair, :dependent => :destroy 
    accepts_nested_attributes_for :hair 
    attr_accessible :location, :name, :hair_attributes 
end 

头发型号

class Hair < ActiveRecord::Base 
    belongs_to :user 
    attr_accessible :color, :user_id 
end 

用户索引

<% @user.each do |user| %> 
    <%= user.name %> 
    <%= user.location %> 
    <%= user.hair %> 
<% end %> 

用户模型迁移

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :name 
     t.string :location 

     t.timestamps 
    end 
    end 
end 

头发模型迁移

class CreateHairs < ActiveRecord::Migration 
    def change 
    create_table :hairs do |t| 
     t.string :color 
     t.integer :user_id 

     t.timestamps 
    end 
    end 
end 

用户控制器

class UsersController < ApplicationController 
    def new 
    @user = User.new 
    @user.build_hair 
    end 

    def create 
    @user = User.new(params[:user]) 
     if @user.save 
      redirect_to users_path 
     else 
      render "user/new" 
     end 
    end 

    def index 
    @user = User.all 
    end 
end 

试试这个:

<% @user.each do |user| %> 
    <%= user.name %> 
    <%= user.location %> 
    <%= user.hair.color %> 
<% end %> 

您的代码将返回指向对象Hair的链接,而不是包含在其中的数据。

+0

感谢您的快速回复。不幸的是,我试了这个,它给了我和错误'未定义的方法'颜色为零:NilClass' - 任何想法我可以做什么来解决这个问题? :) – 2013-03-18 12:02:47

+0

哈!我是一个傻瓜,因为我有5个用户创建没有头发关联(从我试图让关联工作时)。现在,我已经删除了它已经工作的数据库中的这些行!感谢您的帮助:) – 2013-03-18 12:04:56

+0

@TomPinchen如果它解决了您的问题,请接受此答案。 – 2013-03-18 12:19:00