2016-12-13 43 views
0

我試圖通過確認對話觸發的Ajax請求中的url傳遞參數。我想在獲得成功請求的情況下在Rails控制器中獲取該參數的值,但我無法做到。無法通過使用Rails的Ajax請求中的url傳遞參數

我到目前爲止已經試過下面的代碼:

這裏我的Ajax請求,我已經在URL中的數據被添加帕拉姆加上其他PARAMS

function continueSave() { 
    var name = $('#leader_name').val(); 
    var persisted_time = $('#leader_time').val(); 

    $.ajax({ 
    type: "POST", 
    url: "/leaderboards/1/?test=1", 
    data: { leader: { name: name, time: time } }, 
    success: success 

    }); 
} 

此處對話相關JS

function nameAlert() { 
    return confirm("Name already exists. Would you like to continue?"); 
}; 

(function() { 
    if (nameAlert()) { 
    continueSave(); 
    } 
else { 
    //something else here 
    } 
})(); 

雖然請求成功到達控制器,但是params [:test]在控制器中爲零。

我也嘗試過在數據中傳遞測試參數,但它也不工作。

希望得到一些幫助。

相關的控制器動作(leaders_controller.rb)

def create 
    @leader = Leader.new(leader_params) 
    @leader.leaderboard_id = @leaderboard.id 
    @name_repeated = [email protected]_by(name: @leader.name).nil? 
    @check = params[:test] 

    if params[:test].nil? && @name_repeated == true 
     render :template => 'leaders/repeated_name.js.erb' 
    else 
     @leader.save 
     @rank = @leader.rank_in(@leaderboard) 

     respond_to do |format| 
     if @leader.save 
      format.html { redirect_to root_path } 
      format.js { } 
     else 
     end 
     end 
    end 
    end 

注: 1.-領導人/ repeated_name.js.erb「包含了Ajax請求的代碼 2:在路線領導資源嵌套在排行榜資源內

+0

嘗試請求頭 - 頭:{ 「接受」: 「應用/ JSON」, 「內容類型」: 「應用/ JSON」 } –

+0

感謝魯本。我剛開始嘗試使用Ajax,因此我恐怕甚至不知道如何去做。如果你有幾分鐘的時間可以提供進一步的指導? – Andrew

+0

您只需要將該屬性添加到您的請求對象中:$ .ajax({type:「POST」, url:「/ leaderboards/1 /?測試= 1「, 標題:{」Accept「:」application/json「,」Content-Type「:」application/json「}, data:{leader:{name:name,time:time}}, 成功:成功 }); –

回答

0

對不起,我發現了錯誤。這是一個愚蠢的。 我有淺層嵌套的路線,以便領導者嵌套在排行榜中,因此我使用請求的不正確路徑。它應該是:

$.ajax({ 
    type: "POST", 
    url: "/leaderboards/1/leaders?test=1", 
    data: { leader: { name: name, time: time } }, 
    success: success 

    }); 

我應該抓住那個對不起,浪費你的時間。

0

我會在這裏發表 - 我的評論太長了。

嘗試將{ type: 1}添加到您的data並將type更改爲GET。 Rails params包含GETPOST數據 - 您甚至不必更改控制器。

function continueSave() { 
    var name = $('#leader_name').val(); 
    var persisted_time = $('#leader_time').val(); 

    $.ajax({ 
     type: "GET", 
     url: "/leaderboards/1/", 
     data: { leader: { name: name, time: time }, test: 1 }, 
     success: success 
    }); 
} 
+0

嗨奧斯卡,謝謝我只是試過沒有成功,我會再試一次 – Andrew

+0

其實奧斯卡我剛剛注意到這個請求並沒有經過ev沒有URL中的參數。我檢查它是否與Pry聯繫到控制器,並且確定它到達控制器,但也許我錯了。即使沒有測試參數,您是否可以看到請求的任何問題? – Andrew