Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中显示一定数量的数组项_Ruby On Rails_Ruby On Rails 3_Json_Jquery_Coffeescript - Fatal编程技术网

Ruby on rails 如何在rails中显示一定数量的数组项

Ruby on rails 如何在rails中显示一定数量的数组项,ruby-on-rails,ruby-on-rails-3,json,jquery,coffeescript,Ruby On Rails,Ruby On Rails 3,Json,Jquery,Coffeescript,我有一个数组,我想一次只显示4个项目,当我单击Next时,它将显示接下来的4个项目。 查看代码: <table> <tr> <th></th> <th>3</th> <th>2</th> <th>1</th> <th>1</th> <th>2</th> <th>3</th>

我有一个数组,我想一次只显示4个项目,当我单击Next时,它将显示接下来的4个项目。 查看代码:

<table>
<tr>
  <th></th>
  <th>3</th>
  <th>2</th>
  <th>1</th>
  <th>1</th>
  <th>2</th>
  <th>3</th>
  <th></th>

</tr>
<% count = 0 %> 
<% while count < 4%>
  <tr class="match_row" value="<%=count%>">
    <th id="left_competitor"><%= @matches[count][0].title %></th>
    <% (1..6).each do |i|%>
      <th>  <input type="radio" class="group_<%=count%>" name="<%=count%>" value="<%= i%>"><br></th>
    <% end %>
    <th id="right_competitor"> <%= @matches[count][1].title %></th>
  </tr>
  <br />
  <% count += 1 %>
<% end %>
<br />
</table>
<input id="save_votes" type="button" value="Next">
我的想法是让view()中的变量count取一个变量的值,而不是0,但我不知道怎么做。
有什么想法吗?

这看起来像是视图模板中的很多逻辑,让我想起了PHP

也许你可以看看这个:


Ryan使用Gem处理分页(查找Kaminari或WillPaginate),然后使用无阻碍的jQuery处理AJAX组件

您的问题并不完全清楚您遇到了什么问题,但我猜这与代码有关

$.ajax({
type: "POST"
url: "projectss/pca_results"
data: "data=" + data
})
location.reload(true);
它向服务器发送可能更改页面内容的请求,然后立即刷新页面而不等待响应。这里有一个竞争条件:有时页面会在内容更新之前刷新,有时在内容更新之后刷新。你应该改为写信

$.ajax({
type: "POST"
url: "projectss/pca_results"
data: "data=" + data
success: -> location.reload(true);
})

确保仅在处理更新后才刷新页面。或者,更好的方法是编写一个
success
回调,随时更新页面上的HTML,而不是刷新整个页面。您的用户将感谢您。

您不需要在代码中使用
do(i)->
do(j)->
。您只需使用
do(x)->
语法即可捕获内部函数引用的值。感谢回复:)。现在我可以显示任意多的项目,但我想在显示下一个项目之前执行一些代码。让我解释一下:我显示了两个想法和6个单选按钮,用户点击一个单选按钮来选择他最喜欢的想法。我想在移动到下一个4之前保存这4个匹配的结果。您知道怎么做吗?您可能希望使用处理分页的相同javascript函数(在$.getScript之前),并向控制器上的save方法发送另一个AJAX请求,而不是处理保存。只需编写另一个执行的Javscript函数,从DOM中提取要保存的值,然后将它们发送到控制器。您能告诉我如何知道我在最后一页吗?在WillPaginate中,如果您对诸如@matches之类的对象进行分页,您应该能够执行“@matches.page_count”。在视图模板中,您可以检查total_entires是否与params[:page]匹配,如果匹配,则放入Javascript钩子以运行最终的jQuery“@matches.page_count”不起作用,我遇到了以下错误:未定义的方法“page_count”for#。但实际上,我所需要的只是参数。现在它工作了,谢谢。实际上我使用了Blake建议的Gem WillPaginate,它工作了,但是现在我不能在显示下一个项目之前执行CoffeeScript代码
$.ajax({
type: "POST"
url: "projectss/pca_results"
data: "data=" + data
success: -> location.reload(true);
})