简单嵌套属性关联问题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的链接,而不是包含在其中的数据。
感谢您的快速回复。不幸的是,我试了这个,它给了我和错误'未定义的方法'颜色为零:NilClass' - 任何想法我可以做什么来解决这个问题? :) – 2013-03-18 12:02:47
哈!我是一个傻瓜,因为我有5个用户创建没有头发关联(从我试图让关联工作时)。现在,我已经删除了它已经工作的数据库中的这些行!感谢您的帮助:) – 2013-03-18 12:04:56
@TomPinchen如果它解决了您的问题,请接受此答案。 – 2013-03-18 12:19:00