![](/img/trans.png)
[英]How to access an instance variable inside a Javascript function in Ruby on Rails application?
[英]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.