【发布时间】:2018-03-08 13:26:26
【问题描述】:
我有一个我去过的地点的 Rails 模型。每个位置都有一个与我访问过的 5 个区域之一相关的区域 ID。因此,例如,位置“柏林墙”将具有 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 方法,
- 我不得不为locationb重复很多代码,并且
- 似乎只有切片中的两个位置(location 和 locationb)具有相同的区域 ID 时才会显示位置。
非常感谢您的帮助:)
【问题讨论】:
-
你是如何从控制器中填充
@locations数组的?尝试使用位置和区域表连接查询以获取数据,这样您就可以避免在视图中检查if condition。
标签: html ruby-on-rails ruby