我遇到了未定义的方法'每个'当我尝试在@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进行查询时,有一个里面的数据。
谢谢!
答案 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>