我正在部署到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实际上不是一个选项
答案 0 :(得分:0)
也许是静态资产的问题.... 尝试安装gem&#39; rails_12factor&#39;
gem 'rails_12factor', group: :production
bundle install