簡體   English   中英

如何在Rails視圖上的ruby中訪問javascript變量

[英]how to access javascript variable in ruby on rails view

我們有一個javascript代碼,其中在javascript變量(src)中獲得所選圖像的url。 我們想在rails視圖中訪問src var以獲取所選圖像的ID。使用Ajax進行了嘗試,我們嘗試將url傳遞給在控制器中創建的var,但是以某種方式ajax調用不起作用,因此controller var總是顯示nil值。 我們通過兩種方法嘗試了ajax:

1:

$('#submit').click(function(){
$.ajax({

    type: "POST",

    url: "index",

    cache: false,

    data: "src="+src1,

    success: function(){ 

           alert("DATA SAVED");

     }
});

2:

<%= link_to_remote "submit" , :url=>{:controller=>'album',:action =>'index' ,:var=>'src1'}%>

我建議您將Ajax修改為類似的內容。

var MyTestData = '';
function ajax() {
    return $.ajax({
        url: 'index',
        type: 'POST',
        // make sure you use params[:src] in your controller method to access src1
        data: { src: src1 },
        // You should return your response in JSON format
        success: function(data){ MyTestData = data }
    });
}

因此,現在您從POST調用中獲得的響應將保存在MyTestData變量中。
有關如何從控制器方法發送json響應的示例

def index
    # Use the data you passed in the Ajax call
    data = params[:src]
    # Do some processing
    result = something
    # Return the response in json
    render :json => result
end

這是在提交事件時可以使用ajax()函數的方法

$('#submit').click(function(){
    ajax().done(function() {
        // Your MyTestData variable will have whatever details your returned
        // on your POST call. you can test it by logging it in console
        console.log(MyTestData)
      }).fail(function(){
          alert('Ajax call Failed')
    });
});

確保您的src1變量在范圍內。 最簡單的方法(盡管不是最好的方法)將是使src全局化,就在您的腳本標簽內部進行了定義。

當然,有充分的理由不贊成使用全局變量,因此,一旦這項工作奏效,便會着眼於整理代碼並在本地或至少命名空間中聲明src。

另外,變量名為src還是src1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM