2013-03-23 62 views
1

我從Ajax調用中收到一個Google ID,然後希望使用該ID更新我的視圖上的按鈕。通過render_javascript將javascript變量傳遞給partial

以下是new.js.erb中的代碼,它鏈接到new.html.erb。

問題是,我不知道如何傳遞變量的內容。餐廳是一個JSON。該警報返回正確的ID,當我在終端上搜索我的分貝與返回的谷歌身份證我找到餐廳。

下面是代碼:

alert(restaurant["google_id"]); 
    var google_id = restaurant["google_id"]; 
    $("#rating_bar").html("<%= escape_javascript(render 'reviews/buttons/full_profile_rate_restaurant', :google_id => "+google_id+".html_safe) %>"); 

什麼情況是,該變量傳遞是字符串「google_id」,而不是字母和數字的組合,這是谷歌的ID。我已經嘗試了多種方法,這只是衆多錯誤之一 - 我認爲這個問題對於那些瞭解他們JS的人來說非常簡單。

+0

您的警報是否給予您正確的回覆? *餐廳*是散列嗎?一個東西? - 請解釋*餐廳*是如何填充數據的。 – SquareCat 2013-03-23 19:06:06

+0

完成,指揮官! – Laurent 2013-03-23 19:15:23

+0

已將JSON數據解碼爲對象了嗎?或者它仍然是一個包含JSON數據的字符串?如果它仍然是一個字符串,首先確保你解析它:var parsed = jQuery.parseJSON(restaurant); – SquareCat 2013-03-23 19:17:52

回答

3

不可能將JS變量傳遞給ruby部分。

由於Ryan Bigg解釋爲相同類型的問題here,它不可能發送變量,同時呈現該部分。我們需要制定一些其他的東西。即使我也有同樣的問題一次。

或者,

,如果這是google_id僅在局部顯示,則渲染部分之後手動更新這些div的變量。

$("#rating_bar").html("<%= escape_javascript(render 'reviews/buttons/full_profile_rate_restaurant', :google_id => "sample_id") %>"); 
// Now update the required elements 
$("#what-ever-ids").text(google_id); 

或只是創建在控制器其他一些動作,並調用發送一個Ajax請求的行動,並在那裏你會擁有這個js變量,並在js.erb文件使用google_id變量呈現您實際想要更新的相同部分。

+0

嘿Saggar你是正確的,我認爲我一遍又一遍地犯同樣的錯誤。基本上,我必須找到一種在模型對象創建完成後重新渲染局部的方法,而且我正在絞盡腦汁地研究如何實現這一點。 – Laurent 2013-03-23 21:57:53