我有一个在本地运行SQLite的Rails 4应用程序和在Heroku上运行PostgreSQL。
我有一个产品类,它有一个布尔列“isebook”,在products / new.html.erb的表单中设置为true或false。
<%= form_for(@product, :html => {:multipart => true}) do |f| %>
<% if @product.errors.any? %>
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h3><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h3>
<ul>
<% @product.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="form-group">
<%= f.label :name %><br>
<%= f.text_field :name, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :link %><br>
<%= f.text_field :link, class: "form-control" %>
<p style="font-size:12px; margin-top:2px;"><i>(Begin link with http:// or https://)</i></p>
</div>
<div class="form-group">
<%= f.label :description %><br>
<%= f.text_area :description, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label "Product is an Ebook?" %> <br />
<%= f.check_box :isebook %> <br />
</div>
<div class="form-group">
<%= f.label :image, 'Product Image' %><br>
<%= f.file_field :image, class: "form-control" %>
</div>
<div class="actions">
<%= f.submit "Create Product", class: "btn btn-primary" %>
</div>
<% end %>
在控制器中,需要此字段:
def product_params
params.require(:product).permit(:name, :description, :isebook, :image)
end
控制器方法的整个代码:
def new
# Only make new product if user has remaining products
@product = Product.new
if current_user.prodused < current_user.prodlimit
respond_with(@product)
else
redirect_to user_path(current_user.id), error: "You've reached your product limit. Upgrade your account to add more products."
end
end
这是产品型号:
class Product < ActiveRecord::Base
validates :name, :description, presence:true
validates :link, :format => URI::regexp(%w(http https))
belongs_to :user
has_attached_file :image, :styles => {:medium => "300x300", :thumb => "200x200"}, :default_url => "/images/:style/missing.jpg"
end
这在本地正常工作,当创建新产品时,isebook字段根据是否选中该复选框分配为true或false。
我现在正尝试在Heroku上进行测试,我清除了整个生产数据库并运行了所有迁移文件以清除所有现有产品。然后,当我尝试渲染products / new.html.erb时,我成功创建了一个帐户我收到错误 ActionView :: Template :: Error:undefined方法`isebook'代表nil:NilClas
答案 0 :(得分:0)
我清除了整个生产数据库并运行了所有迁移文件以清除所有现有产品。然后我成功创建了一个帐户
有没有产品?
ActionView::Template::Error: undefined method `isebook' for nil:NilClas
此错误表示您已在isebook
上调用方法nil
,可能意味着您尝试加载一个或所有产品,但在您的情况下它们不存在,所以在nil
上调用方法(无)会抛出错误。