未定义的方法`每个&#39; for#<userprofile:0x007fc0d4d1d250> </userprofile:0x007fc0d4d1d250>

时间:2014-12-17 03:06:55

标签: ruby-on-rails ruby ruby-on-rails-4

我遇到了未定义的方法&#39;每个&#39;当我尝试在@user_profile变量中显示数据时。我不知道为什么没有工作。我已经搜索过一些类似的问题,但没有任何反应。

show.html.erb(样本)

<% @user_profile.each do |profile| %>

    <p><%= profile.user_id %></p>
    <p><%= profile.firstname %></p>
    <p><%= profile.lastname %></p>

<% end %>

UserProfileCOntroller

def show
    @user = User.find(params[:user_id])
    @user_profile = @user.user_profile
end

我在这方面有一对一的关系..我不知道为什么我不能在实例变量@user_profile中迭代数据但是当我尝试使用rails c进行查询时,有一个里面的数据。

谢谢!

2 个答案:

答案 0 :(得分:2)

没有@user_profile.each因为@user_profile不是数组。请尝试以下方法:

<p><%= @user_profile.user_id %></p>
<p><%= @user_profile.firstname %></p>
<p><%= @user_profile.lastname %></p>

答案 1 :(得分:0)

如果user只有一个user_profile。并且每个user_profile属于_只有一个user,那么我会改变这样的代码:

# in user model
delegate :firstname, :lastname, :to => :user_profile

# in controller
def show
  @user = User.find(params[:user_id])
end

# in view
<p><%= @user.id %></p>
<p><%= @user.firstname %></p>
<p><%= @user.lastname %></p>