【发布时间】:2012-08-22 17:31:37
【问题描述】:
我在本地没有遇到错误,但在 Heroku 上。错误是:
'ActionView::Template::Error (nil:NilClass 的未定义方法`each')'
'each' 指的是下面我的 User callback.html.erb 视图的 行中 @position 中的每个 i:
<% for i in @positions %>
<strong>
<% begin %>
<%= @user.positions.find_by_id(i).title + " at " %>
<% rescue %>
<% end %>
<% begin %>
<%= @user.positions.find_by_id(i).company %>
<% rescue %>
<% end %>
</strong>
这是我的身份验证控制器的相关部分(回调部分)
def callback
...
@user = current_user
...
#positions
for i in 0..(positions.count-1)
begin
@company_i = companies[i]['name']
rescue
end
begin
@title_i = positions[i]['title']
rescue
end
begin
@industry_i = companies[i]['industry']
rescue
end
begin
@start_month_i = positions[i]['start-date']['month']
@start_year_i = positions[i]['start-date']['year']
rescue
end
begin
@end_month_i = positions[i]['end-date']['month']
@end_year_i = positions[i]['end-date']['year']
rescue
end
begin
@li_pos_id_i = positions[i]['id']
rescue
end
if Position.find_by_li_pos_id(@li_pos_id_i).nil?
@user.positions.build(li_pos_id: @li_pos_id_i, company: @company_i, title: @title_i,
industry: @industry_i, start_month: @start_month_i, start_year: @start_year_i,
end_month: @end_month_i, end_year: @end_year_i)
end
end
@user.save
@positions = @user.positions.map(&:id)
end
我认为这与我的 .find_by 方法返回 nil 值有关,但我不确定如何解决它。谢谢!
编辑的授权控制器:
positions.each do |position|
begin
@li_pos_id = position.id
@title = position.title
@company = position.company.name
@industry = position.company.industry
@start_month = position.start_date.month
@start_year = position.start_date.year
@end_month = position.end_date.month
@end_year = position.end_date.year
rescue
end
unless Position.find_by_li_pos_id(@li_pos_id)
current_user.positions.build(li_pos_id: @li_pos_id, title: @title, company: @company, industry: @industry,
start_month: @start_month, start_year: @start_year, end_month: @end_month, end_year: @end_year)
end
@user.save
@user.positions.save
end
【问题讨论】:
-
您确定当前用户在生产中创建了职位吗?该关联中可能没有任何对象
-
map在这种情况下会返回一个空数组。 -
@tadman 这绝对是丑陋的,感谢您的意见。我已经修改它并粘贴在上面的编辑中。问题是位置模型数据(用户 has_many 位置)没有保存到 heroku 数据库。任何想法为什么?我的用户数据保存得很好
标签: ruby-on-rails heroku