2016-04-17 9 views
0

私は誰かがこれについて私に助けてくれるといいと思いました。私は現在ログインしているユーザーからの曲のハッシュを取得するget_songsというレールコントローラを持っています。つまり、特定のボタンがクリックされるたびに、get_songsコントローラからjavascript変数にデータを取得したいと思います。以下は私がこれまで持っていたものです。Ajaxを使用してレールコントローラのデータを要求してください

playlist.js.erb

function get_songs() { 
var mysongs; 
$.ajax({ 
    type : 'GET', 
    url : "getSongs", 
    dataType : 'json', 
    success : function(response) { 
    } 
    }); 
} 

マイcontrolller

class StaticPagesController < ApplicationController 


    respond_to :js, :json, :html 

def get_songs() 
     if user_signed_in? 
      session[:user_id] = current_user.id 
      present_user = User.find(session[:user_id]) 
      present_user = present_user.playlist.keys 
     @songs = present_user 
    respond_to do |format| 
    format.json { render :json => @songs} 

    end 
    end 

マイルート:

match '/getSongs', to: 'static_pages#get_songs', via: 'get' 

答えて

1

すべてはあなたがするだろう働いていた場合は、次の成功の機能上の

success : function(response) { 
    mysongs = response; 
} 

「応答」パラメータは、あなたのコントローラから送信しているAJAX呼び出しの結果です。 @songs json

あなたのブラウザを右クリックして 'inspect'をクリックすると、あなたのjavascriptをデバッグする簡単な方法(ajaxリクエストの後にあなたの 'レスポンス'の値を確認する)タブをクリックし、javascriptファイルを探して、デバッグポイントを追加する行をクリックします(この場合、 'mysongs = response'の行をクリックしてからページを更新してください)応答 '。

1

私はPROBを考えますセッション中のレム。 ajaxを使用してリクエストを送信すると、Cookieとセッションは送信されません。ですから、gem 'jquery-rails' を使用している場合は、<%= csrf_meta_tag %>でレイアウト/ application.html.erb

UPD を持っていることを確認し、また、この

$.ajax({ 
    type:"GET", 
    beforeSend: function (request){ 
    //your token is here 
    request.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr("content")); 
    }, 
    url: "getSongs", 
    dataType : 'json', 
    success : function(response) { 
    console.log(response) 
    } 
}); 

を試してみて、//= require jquery_ujsapplication.jsを持っていますファイル csrf_meta_tagの内容はすべて自動的にあなたのすべてのajaxリクエストに追加されます

関連する問題