繁体   English   中英

Jquery.html显示文字代码,而不是在application.js中呈现html

[英]Jquery.html showing literal code instead of rendering html in application.js

我在rails application.js文件中实现以下代码。 当用户单击链接时,视图将重新加载完整的审阅者列表,而不是前4个:

$(document).ready(function(){
    $("#more_reviewers").click(function(e){
        $("#reviewer_list").html('<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count) %>');
    });
});

问题:代码没有向我显示列表,而是以文本形式返回了Rails代码。 因此,在屏幕上,我没有看到用户列表,而是看到:

'<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count) %>'

这可能会很简单-我会很感激的。

Rails是服务器端编程语言。 Javascript是客户端。 您无法将ruby代码动态地放入网站客户端,因为它需要首先在服务器上运行。

您必须创建运行此行的Rails脚本

<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count) %>

然后使用load()将其加载到您的元素中,例如:

$(document).ready(function(){
    $("#more_reviewers").click(function(e){
        $("#reviewer_list").load('http://url.to/the/script/you/made');
    });
});

这样,服务器将收到您的脚本请求,它运行脚本(服务器端),并将输出(html)传递到javascript(客户端),可以在其中进行呈现。

除了托马斯的有关客户端和服务器端和假设的解释,你不必再拍请求到服务器:最简单的是只把部分的DIV隐藏在你的视图,然后使用jQuery显示它。

show.html.erb:

<div style="display:none;" id="hidden_div">
  <%= render "restaurants/restaurant_reviewer_list", :venue => @restaurant, :limit => @restaurant.reviews.count %>
</div>

application.js:

$(document).ready(function(){
  $("#more_reviewers").click(function(e){
    $("#hidden_div").show();
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM