Ruby on rails 3 侧边栏需要有所有类别,但没有
我有一个应用程序,其中我添加了一个侧栏,其中列出了产品所属的所有类别 该功能工作正常,但存在一个问题 代码只扫描当前页面上的产品,而不是实际可用的类别。即: 在我的应用程序中有5个类别的产品,但在当前页面上只有3个。所以代码只显示了3个类别,而不是实际的5个类别。 我怎样才能解决这个问题?这与实例变量有关吗 下面是application.html.erb中的代码Ruby on rails 3 侧边栏需要有所有类别,但没有,ruby-on-rails-3,ruby-on-rails-3.1,ruby-on-rails-3.2,Ruby On Rails 3,Ruby On Rails 3.1,Ruby On Rails 3.2,我有一个应用程序,其中我添加了一个侧栏,其中列出了产品所属的所有类别 该功能工作正常,但存在一个问题 代码只扫描当前页面上的产品,而不是实际可用的类别。即: 在我的应用程序中有5个类别的产品,但在当前页面上只有3个。所以代码只显示了3个类别,而不是实际的5个类别。 我怎样才能解决这个问题?这与实例变量有关吗 下面是application.html.erb中的代码 <div> <% a = [""] %> <h1>Categories</h1&
<div>
<% a = [""] %>
<h1>Categories</h1>
<% @products.each do |product| %>
<% a = a + [product.category] %>
<% a = a.uniq %>
<% end %>
<% a.each do |c| %>
<p class="text-error"><%= c %></p>
<% end %>
</div>
该守则可于
可能只需要你们快速浏览一下就可以回答这个问题……我假设您的侧边栏也使用与页面布局其余部分相同的请求进行处理(即,没有单独的控制器操作)
@products
您很可能会在两个地方使用。。。一个用于获取主页的产品,另一个用于获取所有产品。。。您可能必须重命名它们并相应地修改它
如果没有帮助,请显示更多代码…与正在呈现页面的备份相关…如果要显示所有类别,只需执行以下操作
<% for category in Category.all %>
<%= category.name %>
<% end %>
除非您试图显示附加了产品的类别如果将单独的
类别
模型映射到类别
表,则类别。选择(:name)。uniq
将返回唯一的类别
在您的情况下,表中有category列。那么在这种情况下
产品。选择(:类别)。uniq
将返回具有唯一类别的产品列表
因此,现在您的模板将更干净:
<% for product in Product.select(:category).uniq %>
<%= product.category %>
<% end %>
您想显示系统中的所有类别,还是列出的产品所附带的所有唯一类别?@AmitPatel我想显示系统中的类别,但一个类别只能显示一次。如果您有单独的类别
模型映射到类别
表,则类别。选择(:name).uniq
将返回唯一的类别。请在下面检查我的答案。很难通过注释解释上述代码没有帮助,抱歉,这一定是因为没有称为类别的单独模型。我已经上传了代码给大家看。现在是。这个项目很容易设置。它可以清楚地显示问题所在。当前页面只有一个类别,而不是所有类别。请您告诉我如何确保在单击该类别时,属于该类别的产品显示在左侧。。只要一个暗示就足够了。。谢谢@amitpatel产品。其中(类别:“所选类别”)
。检查端到端流量
<% for category in Category.all %>
<%= category.name %>
<% end %>
<% for product in Product.select(:category).uniq %>
<%= product.category %>
<% end %>