我有一个应用程序来管理与公共汽车相关的图像。我的问题是我无法弄清楚如何通过特定的BusImage属性对每个块进行排序:thumb_order而不是BusImage id。
巴士有很多BusImages。
实例变量在Show as ...
下的总线控制器中定义@bus = Bus.find(params[:id]
@bus_images = BusImage.find(:all, :order => 'thumb_order asc')
我在Bus Show页面中调用这些实例变量,如下所示:
@bus.bus_images.each do |bus_image|
bus_image.thumb_order
(other attributes, etc)
end
但无论我如何更改@bus_images上的:order方法,它都不会影响视图。当我尝试在@bus上使用该方法时,因为Buses没有thumb_order列,只是茫然地盯着我。
答案 0 :(得分:0)
我发现@bus_images
与您的下一个集团@bus.bus_images
之间没有任何关联。这是两个完全不同的变量。
如果您想对公交车图像进行排序,请尝试以下方法:
@bus.bus_images.sort_by(&:thumb_order').each do |bus_image|
或者在BusImage模型上设置默认顺序,如Default sort order for a rails model?
答案 1 :(得分:0)
我发现这种语法更容易记住,但请选择:
@bus.bus_images.sort_by{|bi| bi.thumb_order}