Rails索引列表变量在循环期间确实发生了变化

时间:2013-05-03 14:52:36

标签: ruby-on-rails

我正在尝试为索引列表中的每个客户端设置一个按钮,该按钮会将您带到该客户的位置。

这是我的代码:

  <% Client.active.find_each do |client| %>
<tr>
<td><strong><%= link_to client.client_name, client_path(client) %></strong></td>
<td><%= client.locname %></td>
<td><%= client.phone1 %></td>
<td><%= client.fax %></td>
<td><%= client.worequests.notcompl.count %></td>
<td><%= client.workorders.count %></td>
<td><%= client.contacts.count %></td>
  <% location = Location.where('locname' == client.locname).first.id %>
  <td><%= link_to 'Tree', location_url(location), :class => 'btn btn-mini btn-primary' %></td>
  <% if current_user.has_role? :admin or current_user.has_role? :super %>
    <td><%= link_to 'Edit', edit_client_path(client), :class => 'btn btn-mini btn-success' %></td>
  <% else %>
    <td></td>
  <% end %>
 </tr>
<% end %>

但是,链接始终是位置/ 13 - 来自第一个location.where查找。

为什么每个客户端的树按钮都不指向它们的位置?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

无论如何,你的where子句评估为true。我想你想要:

Location.where('locname=?', client.locname).first.id

答案 1 :(得分:0)

我认为这是你的问题:

Location.where('locname' == client.locname)

应该是

Location.where(:locname => client.locname)