1

我在用户控制器中有一个名为仪表板的操作。是这样的:

   def dashboard
      @data = @user.datas.includes(:user).includes(:images)
      render 'datas/show'
   end

我 在这一行收到#ActiveRecord::Relation:0x007fc702d34868> 的错误未定义方法“用户” :

= render 'users/header', :user => @data.user

这怎么可能?在@data变量中是所需要的一切......

4

1 回答 1

0

您的问题是您正在对象列表上调用实例方法。

@data = @user.datas.includes(:user).includes(:images)

这实际上是属于用户实例的 Data 对象数组@user

要解决这个问题,您可以获取列表的第一个元素并获取其用户:

= render 'users/header', :user => @data.first.user

但是您应该知道,所有这些@variables都是在控制器的操作、视图和调用的部分之间共享的。考虑到这一点,您会注意到您可以简单地执行以下操作:

# in datas/show.html.haml
= render 'users/header'

# in users/_header.html.haml
# you can use the @user variable as your wishes
= @user
于 2013-08-05T16:38:34.210 回答