通过render_javascript将javascript变量传递给partial

时间:2013-03-23 19:00:56

标签: javascript jquery ruby-on-rails

我从Ajax调用中收到一个Google ID,然后想要使用该ID更新我的视图中的按钮。

以下是new.js.erb中的代码,该代码链接到new.html.erb。

问题是,我不知道如何传递变量的内容。餐厅是一个json。警报返回正确的ID,当我在终端上使用返回的谷歌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”,而不是google ID的字母和数字组合。我尝试了多种方法,这只是众多方法中的一种 - 我认为这个问题对于那些非常了解JS的人来说非常容易。

1 个答案:

答案 0 :(得分:3)

无法将JS变量传递给ruby partial。

由于Ryan Bigg针对相同类型的问题here进行了解释,因此在呈现该部分时无法发送变量。我们需要解决其他问题。即使我也有同样的问题。

或者,

如果 google_id 只是在partial中显示的变量,则在渲染部分后手动更新这些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 变量进行更新。