我有另一个涉及每个循环的问题。我有一个显示当前教室的视图。它显示有多少学生在线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对于所有条目(最后一个)都是相同的。有帮助吗?这可能相当简单,不确定。
答案 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 %>