我正在使用Gmaps4Rails显示一个带有标记的地图。当每个标记被点击时,我的意图是使infowindow仅显示关于该特定标记的信息表。我使用partial来生成这个表,但是,每当单击任何管脚时,该表也会显示所有其他管脚的数据。我认为我需要在partial中使用if语句,将控制器中正在单击的引脚与partial生成的数据进行比较。不幸的是,我当前使用的if语句将基于哪个pin被单击的正确公司替换到表中每一行的名称槽中,但没有限制返回哪些行。如何在部分语句中编写只返回正确行的if语句?
controller.rb:
def index
@internships = Internship.all
@internship_properties = Array.new
@internships.each do |internship|
@internship_properties.push(internship)
end
@hash = Gmaps4rails.build_markers(@internship_properties) do |internship_prop, marker|
marker.lat internship_prop.latitude
marker.lng internship_prop.longitude
marker.infowindow render_to_string(:partial => "/internships/info", :locals => { :internship => @internship, :internship_prop => internship_prop.company})
end
end_info.html.erb
<% @internships.each do |internship| %>
<% if internship.address = internship_prop %>
<h3><%=internship.address%></h3>
<h5>Name: <%=internship.name%></h5>
<table class="table table-hover">
<tr>
<th>Company</th>
<th>Title</th>
<th>Date</th>
<th>Description</th>
</tr>
<tr>
<td><%=internship.company%></td>
<td><%=internship.title%></td>
<td><%=internship.date%></td>
<td><%=internship.description%></td>
</tr>
</table>
<% end %>
<% end %>发布于 2017-03-11 03:58:50
你应该有:
<% if internship.address == internship_prop %>而不是
<% if internship.address = internship_prop %>在_info.html.erb中。单数=符号代表赋值,它将返回赋值的值,而==代表实际比较。
但根据我对你的描述的理解,控制器应该只返回所选引脚的数据。可以考虑使用ajax调用来异步获取所选引脚的数据,而不是加载所有的internships。例如,您可以使用jQuery load() function。
https://stackoverflow.com/questions/42726256
复制相似问题