我收到此错误,如何解决此关系错误
我有一个名为property.rb
class Property < ActiveRecord::Base
belongs_to :rm
belongs_to :category
end
我也有category.rb
class Category < ActiveRecord::Base
has_many :rms,dependent: :destroy
has_many :properties,dependent: :destroy
end
我的RM(关系经理)模型是
class Rm < ActiveRecord::Base
acts_as :user
belongs_to :category
has_many :properties
end
在我的控制器中我列出了这样的属性
class Rms::PropertiesController < ApplicationController
before_filter :authenticate_user!
before_action :set_property, only: [:show, :edit, :update, :destroy]
def index
@properties = Property.all
end
def property_params
params.require(:property).permit(:seller_name,:rm_id,:category_id,:property_type_id,:seller_email,:seller_phone,:property_name)
end
end
在我的视图页面中 我列出了RM在index.html.erb
中添加的属性 <% @properties.each do |property| %>
<tr>
<td><%= property.seller_name %></td>
<td><%= property.seller_email %></td>
<td><%= property.seller_phone %></td>
<td><%= property.category.name %></td>
<td><%= property.property_name %></td>
<% end %>
答案 0 :(得分:2)
nil的未定义方法`name':NilClass
这是因为其中一个property
没有关联category
。立即修复将使用try
方法。
<%= property.category.try(:name) %>
答案 1 :(得分:1)
确保category
始终与property
相关联。
在物业模型中添加:
validates :category, presence: true
如果您的产品不一定总是有类别,您可以使用安全导航(这几乎总是一个丑陋的解决方案):
product.category.try(:name) # Ruby < 2.3.x
product.category&.name # Ruby >= 2.3.x
答案 2 :(得分:1)
这是因为 for (int[] a : array) {
String str = Arrays.toString(a);
System.out.println(str.substring(1, str.length()-1).replaceAll("[,]", ""));
}
没有property
与之关联。
所以
category
抛出错误
未定义的方法`name&#39;为零:NilClass
因为{0}不存在nil类,在本例中为<td><%= property.category.name %></td>
您可以使用名为name
的gem来处理此类情况。
安装gem之后,只需将代码重写为:
category
答案 3 :(得分:1)
可能属性没有类别。尝试使用:
<%= property.category.name rescue nil%>