我有一个我访问过的Rails模型。每个位置都有一个区域ID,属于我访问过的5个区域之一。因此,例如,位置"柏林墙"会有region_id ="欧洲"。
在浏览网站时,首先会看到显示的5个区域(我也有区域模型)。如果单击某个区域,则下一页将显示与该区域关联的所有位置。
所以,我需要打电话给所有的位置,但只有这些位置' region_id与给定区域相同。但是,我不确定如何执行此操作(使用.each方法),同时还将这些位置拆分为2列。
这是我目前拥有的html和ruby代码。请注意,它非常混乱,需要大量重复:
<div class="container-fluid">
<% @locations.each_slice(2) do |location, locationb| %>
<% if location.region_id.to_s.downcase == @region.name.downcase && locationb.region_id.to_s.downcase == @region.name.downcase %>
<div class="row">
<div class="col-md-6">
<a href="/regions/<%=@region.name%>/<%=location.id%>">
<h4 class="media-heading">| <%=location.caption %> </h4>
<img class="media-object" src="<%=location.image_url%>" alt="..." width = 400>
</a>
<p>| <b>Date Visited:</b> <%= location.date %> | <b>Near:</b> <%= location.nearest_area %></p>
<a href="/regions/<%=@region.name%>/<%=location.id%>" class = "btn btn-primary">View</a>
<a href="/<%=@region.name%>/<%=location.id%>/edit" class = "btn btn-warning">Edit</a>
<a href="/<%=@region.name%>/destroy_warning/<%=location.id%>" class = "btn btn-danger">Destroy</a>
</div>
<div class="col-md-6">
<a href="/regions/<%=@region.name%>/<%=locationb.id%>">
<h4 class="media-heading">| <%=locationb.caption %> </h4>
<img class="media-object" src="<%=locationb.image_url%>" alt="..." width = 400>
</a>
<p>| <b>Date Visited:</b> <%= locationb.date %> | <b>Near:</b> <%= locationb.nearest_area %></p>
<a href="/regions/<%=@region.name%>/<%=locationb.id%>" class = "btn btn-primary">View</a>
<a href="/<%=@region.name%>/<%=locationb.id%>/edit" class = "btn btn-warning">Edit</a>
<a href="/<%=@region.name%>/destroy_warning/<%=locationb.id%>" class = "btn btn-danger">Destroy</a>
</div>
</div>
<%end%>
<%end%>
</div>
你可以忽略很多这段代码 - 我的问题在于第1-6行。问题在于使用.each_slice
方法,
非常感谢帮助:)
答案 0 :(得分:1)
您应该查看关联:http://guides.rubyonrails.org/association_basics.html
实质上,在Location
模型中,您可以添加以下内容:
belongs_to :region
在Region
模型中,您可以添加以下内容:
has_many :locations
然后你可以这样做:
@region = Region.find_by(region_id: 'europe')
@locations = @region.locations
以上内容将为您提供属于“欧洲”地区的所有地点。
要记住以上内容的一个重要事项,您需要在您的位置数据库表中添加region_id
以使上述工作