Ruby on rails Rails在视图中迭代多步骤关联的方式是什么?
我有一个Rails 3项目和产品Ruby on rails Rails在视图中迭代多步骤关联的方式是什么?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个Rails 3项目和产品 :product has_many :product_properties :product has_many :properties, :through => :product_properties :product_property belongs_to :product :product_property belongs_to :property :property has_many :product_properties :property b
:product has_many :product_properties
:product has_many :properties, :through => :product_properties
:product_property belongs_to :product
:product_property belongs_to :property
:property has_many :product_properties
:property belongs_to :property_type
在:property\u type和:property上有一个属性“sequence”
我想在这两个级别上按顺序显示它们。我能想到的唯一方法是在模型中循环遍历它们中的每一个,并将序列号放入散列中,这样我就可以对其进行排序。非常非常难看
我知道我可以在has\u many relationships上添加一个“order”,但这并不能解决我从多对多关系中得到的归属排序问题
我认为我需要使用散列的原因是因为我希望我的显示是:
属性类型1****属性1:值
*属性2:值
*财产3:价值 属性类型2***
*属性4:值
*财产5:价值
如果我在整个集合中循环,我将得到我的属性类型的副本,除非我在其中放入一些丑陋的“以前的值”和“当前值”比较。我有一些想法,不确定它们是否有效,而且我仍然使用rails 2.3 想法1- 添加到您的模型中 默认范围:order=>“sequence” 想法2- Product.find(:all,:include=>{:Product\u properties=>{:properties=>:property\u type}},:order=>“products.sequence,property\u types.sequence”) 注意:该表在查询中可能不被称为property_类型,但您可以查看日志,看看rails提供了什么样的别名 万不得已 a、 按{a{a}排序
(无需创建散列)以下是我最后要做的事情。它是“:has_many,:through”关系和AREL的组合,它允许我以一种漂亮的方式显示嵌套关系,而无需大量代码
<% for pt in PropertyType.where("name not in ('Interchanges','Description')").order(:name) %>
<% next unless pt.product_properties.where(:product_id => @product.id).first %>
<h2><%= pt.name %></h2>
<p>
<% for pp in @product.product_properties.includes(:property).order("properties.name") %>
<%= pp.property.name %>: <%= pp.value %><br />
<% end %>
</p>
<% end %>
@product.id)。第一个%>
:
我编辑了这篇文章。我需要散列的原因是因为我有一个非常详细的集合,但我想像上面列出的那样分块显示。PropertyType.where
调用属于模型,而不是视图。Rails是一个MVC框架: