Ruby on Rails: 在 patial 中使用 if 语句

Ruby on Rails: Using an if statement in a patial

我正在使用 Gmaps4Rails 显示带有标记的地图。单击每个标记时,我的目的是让信息窗口仅显示有关该特定标记的 table 信息。我正在使用部分生成此 table,但是每当单击任何引脚时,table 也会显示有关所有其他引脚的数据。我相信我需要在部分中使用 if 语句来比较在控制器中单击的引脚与部分生成的数据。不幸的是,我目前拥有的 if 语句根据单击的 pin 将正确的公司替换为 table 中每一行的名称槽,但不限制哪些行被 returned。如何在部分中编写一个 if 语句,使 return 只有正确的行?

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 %>

你应该有:

<% if internship.address == internship_prop %>

而不是

<% if internship.address = internship_prop %>

在 _info.html.erb 中。单数 = 符号代表将 return 赋值的赋值, == 代表实际比较。

但是根据我从您的描述中了解到的情况,控制器应该 return 仅选择引脚的数据。也许考虑使用 ajax 调用来异步获取所选引脚的数据,而不是加载所有 internships。您可以使用例如 jQuery load() function.