我从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的人来说非常容易。
答案 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 变量进行更新。