我没有麻烦在前面的代码推到Heroku的,但是这最后推已经搞砸了。 已更改的唯一事情是不是通过每个循环student
,它现在通过每个循环user
。
背景
代码工作在本地,而不是在Heroku。 这是提高在Heroku上的错误页面是所有学生的名单(指数)。 什么代码正在做的是通过所有的循环Users
有一个profile_type = "Student"
。
出于某种原因,该公司试图以一个Student对象的访问态关联(配置文件),当用户对象应改为使用。
从Heroku的日志
ActionView::Template::Error (undefined method `profile' for #<Student:0x007f80c5552330>):
35: <tbody>
36: <% @students.each do |user| %>
37: <tr>
38: <td><%= link_to user.profile.ivywise_id, student_path(user.profile_id) %></td>
39: <td><%= link_to user.first_name.camelize, student_path(user.profile_id) %></td>
40: <td><%= link_to user.last_name.camelize, student_path(user.profile_id) %></td>
41: <td><%= user.email %></td>
app/views/students/index.html.erb:38:in `block in_app_views_students_index_html_erb__3704269538007702833_70095521176320'
app/views/students/index.html.erb:36:in `_app_views_students_index_html_erb__3704269538007702833_70095521176320'
应用程序代码
student.rb
class Student < ActiveRecord::Base
has_one :user, :as => :profile, dependent: :destroy
...
students_controller
def index
@students = User.where(profile_type: "Student").order("last_name")
end
index.html.erb学生
<% @students.each do |user| %>
<tr>
<td><%= link_to user.profile.ivywise_id, student_path(user.profile_id) %></td>
<td><%= link_to user.first_name.camelize, student_path(user.profile_id) %></td>
<td><%= link_to user.last_name.camelize, student_path(user.profile_id) %></td>
<td><%= user.email %></td>
<td></td>
<td>
<%= link_to "Edit", edit_student_path(user.profile_id), class: "btn btn-default btn-small" if can? :edit, Student %>
</td>
</tr>
<% end %>
user.rb
class User < ActiveRecord::Base
belongs_to :profile, :polymorphic => true
我曾尝试:
- 双重检查,从本地的/ dev所有迁移都与Heroku的同步
- Heroku的文件克隆仔细检查,他们正在运行的同一个代码库
- 冉
heroku restart
命令 - 双重检查就跑
heroku run rake db:migrate
,以确保一切 - 双重检查数据库,以确保所有的数据和列是相同的
- 我检查的其他机器和浏览器; 还是同样的问题
无疑地挫折......感谢您的帮助!