0

我有一个用户模型 has_many hacks 和 hack belongs_to 用户。Hack 有一个字段 user_id。

我有一个带有主页操作的 static_pages_controller:

def home
  @hacks = Hack.all
  @users = User.all
end

用户模型为:

class User < ActiveRecord::Base
  attr_accessible :username, :email, :password, :password_confirmation
  has_secure_password

  has_many :hacks
end

黑客模型是:

class Hack < ActiveRecord::Base
  attr_accessible :hack_name, :serial_ids, :commentary

  has_many :hacktions, :dependent => :destroy
  has_many :serials, through: :hacktions
  belongs_to :user

  default_scope order: 'hacks.created_at DESC'

  extend FriendlyId
  friendly_id :hack_name, use: :slugged
end

在视图中,我想遍历 hacks,然后识别与之关联的用户:

<% @hacks.each do |h| %>
  <span><%= @users.find(h.user_id).username %>
  <div class = "home-date"><%=  h.created_at.strftime("%B %m, %Y - %I:%M %p")  %><%=   image_tag("housing.png") %></div>
  <div class = "home-title"><%= link_to h.hack_name, hack_path(h) %></div>
  <div class = "commentary lead"><%= markdown(h.commentary) %></div>
<% end %>

我收到以下错误:

 undefined method `username' for #<Enumerator:0x007fd5078ac7b0> 

任何想法我在这里做错了什么。仅供参考:用户名是用户模型中的可访问字段。

4

2 回答 2

1

尝试调用first您的结果find

@user.find(h.serial_id).first.username
于 2013-03-22T21:30:10.160 回答
0

尝试改变:

<span><%= @user.find(h.serial_id).username %>

<span><%= @user.find_by_serial_id(h.serial_id).username %>
于 2013-03-22T22:23:50.167 回答