在Rails上使用每个AND window.location

时间:2013-10-29 17:58:08

标签: ruby-on-rails ruby

我有另一个涉及每个循环的问题。我有一个显示当前教室的视图。它显示有多少学生在线atm等。在位于右下角的div中,我有一张表格列出了所有可用的教室。教室的“名称”是一个按钮,使用新参数(:class_id)刷新页面,然后显示“点击”教室。

我的问题是在每个do循环中为表中的每一行确定正确的ID。

我在视图中有这个代码(例子)

<% @classrooms.each do |room| %>
<table>
  <tr>
     <td><%= room.id %></td>
     <td><button onclick= "class()"><%= room.class %></button></td>
  </tr>
</table>
<script>function class(){window.location = '<%= classroom_path(:class_id = room.id)%>'};</script>
<% end %>

它使用新参数重定向,但class_id对于所有条目(最后一个)都是相同的。有帮助吗?这可能相当简单,不确定。

2 个答案:

答案 0 :(得分:1)

我很困惑。为什么不使用真正的链接?

<% @classrooms.each do |room| %>
  <%= link_to room.class, classroom_path(room) %>
<% end %>

如果你不想要一个链接(可以设置为几乎任何css框架的按钮;包括bootstrap);你可以随时做:

<% @classrooms.each do |room| %>
  <%= button_to classroom_path(room), method: :get, value: room.class %>
<% end %>

如果您想通过js / jquery进行,请转到:

<% @classrooms.each do |room| %>
  <%= tag :button, data: {url: classroom_path(room)}, class: 'js_button' ,value: room.class %>
<% end %>
<script type="text/javascript">
  $(document).on('click', '.js_button', function(){
    window.location = this.getAttribute("data-url");
  });
<script>

也是,错字:classroom_path(:class_id = room.id)

答案 1 :(得分:0)

您的语法看起来不对。尝试

<td><%= room.id %></td>

还有<%= room.class %>

如果要在erb中输出数据,则需要<%=而不仅仅是&lt;%`

此外,您正在为每个class()对象重新定义@classroom函数,因此任何按钮单击都会每次调用相同的函数。您没有为每个实例创建新函数。

但是,只需执行一个简单的link_to并使用<%= link_to room.class, class %>

之类的路径助手,就可以更轻松地清理这些内容