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

时间:2013-03-18 11:56:27

标签: ruby-on-rails ruby-on-rails-3 nested-attributes rails-activerecord

我有两个模型,一个用户模型和一个头发模型。我创建了一个表单,该表单成功地允许用户提交并保存他们的姓名,用户模型中的位置以及头发模型中的头发颜色。

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

Hair目前是我的路线中User的嵌套属性,我在视图中显示的当前结果是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

1 个答案:

答案 0 :(得分:1)

试试这个:

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

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