ActionView :: Template ::错误:仅限实时服务器上的未定义方法

时间:2012-08-19 17:54:59

标签: ruby-on-rails

这个Ruby on Rails问题有点令人烦恼,因为代码在本地工作正常,但是当我把它推到我的实时服务器上时却没有。

我使用迁移向表中添加了一些int列,并有一些复选框来确定某个页面上是否显示某个状态的项目,例如:

status\page myitems   featureditems   saleitems
status1        X           x             x    
status2        x           x 

这在开发环境中本地工作正常,但是当我将代码推送到我的实时服务器时,“添加新功能”页面无法加载,并出现以下错误:

Started GET "/admin/statuses/new" for 86.159.115.236 at 2012-08-19 13:39:12 -0400
Processing by Admin::StatusesController#new as HTML
Rendered shared/_validationerror.html.erb (0.0ms)
Rendered admin/statuses/_form.html.erb (2.1ms)
Rendered admin/statuses/new.html.erb within layouts/application (2.2ms)
Completed 500 Internal Server Error in 4ms

ActionView::Template::Error (undefined method `show_my_items' for #<Status:0xb6c1690>):
20:       </tr>
21: 
22:       <tr>
23:         <td align="center"><%= f.check_box :show_my_items  %></td>
24:         <td align="center"><%= f.check_box :show_latest_items  %></td>
25:         <td align="center"><%= f.check_box :show_featured_items  %></td>
26:         <td align="center"><%= f.check_box :show_search_results  %></td>
app/views/admin/statuses/_form.html.erb:23:in `block in    
_app_views_admin_statuses__form_html_erb__566719799_79558060'
app/views/admin/statuses/_form.html.erb:1:in   
`_app_views_admin_statuses__form_html_erb__566719799_79558060'
app/views/admin/statuses/new.html.erb:7:in 
`_app_views_admin_statuses_new_html_erb__880262090_94647510'
app/controllers/admin/statuses_controller.rb:31:in `new'

在这种情况下,“show_my_items”是附加到状态的字段之一(由page1表示)。

此外,在现场我可以使用复选框编辑状态(但它是int数据类型...),但在实时,虽然我可以查看编辑页面并提交没有错误,但它实际上不会更新字段

因此列存在于数据库中,代码与我现场的代码相同,但错误仅发生在实时服务器上。两者的相同版本的Rails(3.1.0.rc8),ruby版本略有不同(本地:1.9.2p320,实时:1.9.3p194)。

不知道发生了什么......

2 个答案:

答案 0 :(得分:4)

可以肯定的是,您是否在生产模式下在服务器上运行迁移?

$ RAILS_ENV=production rake db:migrate

答案 1 :(得分:1)

问题似乎是乘客没有正确启动。要么花费的时间比我想象的要长,要么出现其他问题,但是再次重新启动乘客它的工作正常。