我想显示属于他们所属类别的子类别。创建子类别时,我使用它来选择类别。
<div class="control-group">
<%= f.label :category, :class => 'control-label' %>
<div class="controls">
<%= f.select :category, Category.all.collect {|c| [ c.title, c.id ] } %>
</div>
<%= error_span(@subcategory[:category]) %>
</div>
如果我确认存在它已经是emtpy所以我认为这可能是错误的。
现在在视图中我想显示子类别所属的正确类别。
这就是我试过的
<td><%= Category.find(subcategory.category_id) %></td>
不幸的是我收到错误“无法找到没有ID的类别”
答案 0 :(得分:0)
我的问题是我忘了在子类别控制器中添加强参数。这就是创建子类别后视图中不存在id的原因。
答案 1 :(得分:0)
顺便说一句,我们最近使用ancestry
gem创建了Category
系统。
我高度推荐它,因为您可以将所有类别保存在单个模型中和您将能够显示类别&amp;嵌套类别非常简单:
-
祖先类别
-
<强>模型强>
这种方式非常简单 - 您只需要一个中心Category
模型,它将附加ancestry
宝石:
#Ancestry
has_ancestry cache_depth: true
这将使您能够创建单个Category
,然后根据需要将尽可能多的“祖先”关联到它。这样做的好处在于它可以让您调用单个Category
对象和utilize the many Ancestry
methods for it:
之所以这很重要,是因为它可以让你创造真正的动态和嵌套Categories
与单个模型/表。此外,您将能够创建一个视图系统,使您能够像这样调用部分:
#app/views/categories/index.html.erb
<%= render "category", collection: @categories, as: "category" %>
#app/views/categories/_category.html.erb
<%= link_to category.title, edit_admin_category_path(category) %>
<% if category.has_children? %>
<%= render partial: "category", collection: category.children, as: "category" %>
<% end %>
<强>视图强>
最后,您真的不应该直接在您的观看中调用Models
。您需要确保已经阅读了MVC programming pattern(构建了Rails),这基本上表明您需要构建所有数据对象。填充在控制器操作中,不是您的视图