通过AJAX一次加载两个视频

时间:2012-02-05 10:19:07

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3

我在rails 3.1中运行了一个应用程序,其中一个页面显示嵌入的视频。我只想一次显示两个并且有一个AJAX选项来加载更多视频而不刷新页面。或多或少常规评论系统如何工作,例如youtube用于查看下一条评论和查看之前评论的选项。

当他们放入的部分视频通过AJAX加载时,我很难获得正确的视频。我猜这个归结为一般的问题是如何通过AJAX将参数传递给partials。我尝试了各种各样的方法,但似乎无法让它发挥作用。

_videos

<% for video in @videos %>
<p> Video #1 </p>
<%= raw youtube_embed(video.video_link) %> <%# outputs regular html, youtube_embed is a module helper %>    
<% end %>
<p> testing </p>

next_videos.js.erb

$('#next_videos').replaceWith('<%=escape_javascript(render(:partial => 'videos'))%>');

控制器方法

def next_videos
@videos = Video.find_all_by_id('1')
respond_to do |format|
  format.html { redirect_to(root_path, :notice => 'Error') }
  format.js # the actual ajax call
end
end

我想一次展示两个视频。我想通过一个与@videos一起传递给部分的计数器来实现这一点。实现这样的事情的最佳方法是什么?我是以错误的方式来做这件事的吗?此外,我已经读过相互矛盾的论点,你不能GET或POST部分。如果有人能对此有所了解,我们将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:0)

在您的视频中,您应该写一些类似的内容

<% for video in videos %>
<p> Video #1 </p>
<%= raw youtube_embed(video.video_link) %> <%# outputs regular html, youtube_embed is a module helper %>    
<% end %>
<p> testing </p>

注意视频不是@videos,因为您将其作为本地传递

答案 1 :(得分:0)

我发现实现此目的的最佳方法是使用会话变量来跟踪AJAX请求之间显示的当前视频。