在Heroku中获取ActionViewTemplate错误但不是本地rails环境

时间:2016-09-08 13:46:02

标签: ruby-on-rails heroku

我正在部署到Heroku,并在加载表单以创建新房间时出现错误

ActionView::Template::Error (undefined method 'attractions' for Room)

我已在RoomsController中添加了允许的参数中的吸引力

params.require(:room).permit(:attractions)

这就是景点文字字段在表格中的样子

<%= form_for @room, html: {multipart: true} do |f| %>
      <label for="textarea2" style="font-size: 17px; color: #0089ec;">Neighborhood Attractions</label>
      <%= f.text_area :attractions, autofocus: true, :placeholder => "What tourist attractions are in your city", :class => "materialize-textarea"  %>

这是为添加景点字段而创建的迁移

class AddAttractionsToRoom < ActiveRecord::Migration
    def change
        add_column :rooms, :attractions, :text
    end
end

最后在展示页面中我有了这个

 <div class="col m8 offset-m1 s12">
       <p class="grey-text"><%= @room.attractions %></p>

 </div> 

有人知道为什么会这样吗?感谢

更新:

所以我检查了日志,发现问题是我在创建景点字段之前发生了迁移错误并且rake正在中止。

这是我制造的混乱:

首先我添加一个city_limit布尔字段

class AddAmenitiesToRoom < ActiveRecord::Migration
    def change
        add_column :rooms, :city_limit, :boolean    
    end
end

然后由于某种原因我忘记了我创建了city_limit布尔字段,而是认为我有一个城市字符串字段。所以我认为我应该通过此迁移将其重命名为city_limit

class ChangeColumnName < ActiveRecord::Migration
    def change
        change_column :rooms, :city, :city_limit, 'boolean USING CAST(test_type AS boolean)'
    end
end

最后我决定,你知道吗,我认为我毕竟需要一个城市字符串字段来进行地理定位,所以添加了另一个迁移

class AddAcityToRoom < ActiveRecord::Migration
    def change
        add_column :rooms, :city, :string
    end
end

令人尴尬,我知道。保持迟到编码永远不会好。但是,通过删除此迁移可以轻松解决问题,

class ChangeColumnName < ActiveRecord::Migration
    def change
        change_column :rooms, :city, :city_limit, 'boolean USING CAST(test_type AS boolean)'
    end
end 

我只是不知道是否删除迁移文件是一个好主意,因为我已经运行了rake db:migrate并且在此之后还有大约10个其他迁移因此rake db:rollback实际上不是一个选项

1 个答案:

答案 0 :(得分:0)

也许是静态资产的问题.... 尝试安装gem&#39; rails_12factor&#39;

gem 'rails_12factor', group: :production

bundle install