Rails AJax获取动态URL

时间:2014-07-14 06:26:04

标签: javascript jquery ruby-on-rails ajax

HI我是rails noe的初学者我正在使用jplayer在rails 4中使用音乐播放器应用程序并创建播放列表我正在使用Ajax函数

$.ajax({ 
    type: 'GET',
    url:"../albums.json",
    success: function(data){
                  myPlaylist.add({title:$(this).attr("names")})
                                        },
    error: function(xhr,status,error){
                      alert(error);
                    }
    });

我想要的是在点击特定专辑时将专辑/ 3.json等单个专辑传递到Ajax URL ...欢迎任何想法

1 个答案:

答案 0 :(得分:5)

由于您是初学者,请让我为您解释


<强>的Ajax

Ajax代表异步Javascript和XML - 它旨在将请求并行发送到您的标准HTTP请求。这基本上意味着您可以在不重新加载页面的情况下从服务器请求数据。

大多数人的问题是他们认为阿贾克斯是这个黑魔术;它只是Javascript代表您向您的服务器发送请求。

当您使用Ajax发送请求时,您需要能够将正确的数据发送到正确的URL,然后相应地处理响应。

我开始使用软件后很长一段时间才知道,所以我希望它有所帮助。

-

<强>路线

#config/routes.rb
resources :albums #-> domain.com/albums/[:id]

您需要采取的第一步是正确定义路线。由于Rails使用resourceful routing结构(路由构建围绕各种以控制器为中心的资源,因此您可以使用

当您向albums/x.json发送请求时,您实际上已将请求发送到show资源的albums操作,您需要拥有该资源就绪

-

<强>控制器

设置路由时,您需要能够通过控制器处理JSON请求。您可以使用respond_to块执行此操作:

#app/controllers/articles_controller.rb
Class ArticlesController < ApplicationController
    def show
        @album = Album.find params[:id]

        respond_to do |format|
            format.html
            format.json { render json: @album.to_json} 
        end
    end
end

-

<强> UJS

最后,您最好使用Rails' UJS - UJS旨在发送ajax个请求(以及其他内容),而无需编写任何JS代码。

#app/views/controller/index.html.erb
<%= link_to "Play", @album, remote: true, format: :json %>

然后,您将能够使用标准JS捕获响应,其中包含UJS ajax event hooks的一些内容:

#app/assets/javascripts/application.js
$(document).on("ajax:complete", "#link", function(data){
   //stuff here
});