Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery.html在application.js中显示文字代码而不是呈现html_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

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

Javascript Jquery.html在application.js中显示文字代码而不是呈现html,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我在rails application.js文件中实现了以下代码。当用户单击链接时,视图将重新加载一个完整的审阅者列表,而不是前4个: $(document).ready(function(){ $("#more_reviewers").click(function(e){ $("#reviewer_list").html('<%= escape_javascript(render "restaurants/restaurant_reviewer_list", :v

我在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) %>');
    });
});
$(文档).ready(函数(){
$(“#更多#U审阅者”)。单击(功能(e){
$(“#审阅者列表”).html('@restaurant,:limit=>@restaurant.reviews.count)%>');
});
});
问题:代码没有显示列表,而是以文本形式返回Rails代码。因此,在我的屏幕上,我看到的不是用户列表,而是:

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

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

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

您必须创建一个运行这一行的rails脚本

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

通过这种方式,服务器收到对脚本的请求,它运行脚本(服务器端)并将输出(html)传递到javascript(客户端),在那里可以呈现脚本。

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

您必须创建一个运行这一行的rails脚本

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

通过这种方式,服务器收到对脚本的请求,它运行脚本(服务器端)并将输出(html)传递给javascript(客户端)可以呈现的地方。

除了Thomas关于客户端和服务器端的解释之外,假设您不必向服务器发出另一个请求:最简单的方法是将部分放在视图中的隐藏div中,然后使用jQuery显示它

show.html.erb:

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

除了Thomas关于客户端和服务器端的解释,并假设您不必向服务器发出另一个请求:最简单的方法是将部分放在视图中的一个隐藏div中,然后使用jQuery显示它

show.html.erb:

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

非常感谢托马斯,这很清楚。这个解决方案听起来既麻烦又资源繁重。你的建议是什么最好?我可以修改一些代码,以满足向用户交付速度和简单性的标准。非常感谢你的建议。米沙建议另一种方法。我认为我建议的方法在某些情况下是最好的,因为如果在页面上时输出更新,您将始终获得最新版本(因为您是实时加载的,而不是在页面加载开始时仅加载一次),但是,如果你不想再创作一个剧本,米沙的也完全有效。托马斯,我真的很感谢你的帮助。我对Misha投了更高的票,因为我实现了他的解决方案——脚本不更新没关系,因为在一个页面视图中,审阅者的数量不会发生显著变化。非常感谢。非常感谢托马斯,这很清楚。这个解决方案听起来既麻烦又资源繁重。你的建议是什么最好?我可以修改一些代码,以满足向用户交付速度和简单性的标准。非常感谢你的建议。米沙建议另一种方法。我认为我建议的方法在某些情况下是最好的,因为如果在页面上时输出更新,您将始终获得最新版本(因为您是实时加载的,而不是在页面加载开始时仅加载一次),但是,如果你不想再创作一个剧本,米沙的也完全有效。托马斯,我真的很感谢你的帮助。我对Misha投了更高的票,因为我实现了他的解决方案——脚本不更新没关系,因为在一个页面视图中,审阅者的数量不会发生显著变化。非常感谢。嘿,米沙,我投你的票是因为你跟进了我的两篇相关文章,非常感谢你的帮助,并给了我一个很好的解决方案。谢谢谢谢很高兴我能帮上忙。嘿,米莎,我投你的票是因为你跟进了我的两篇相关文章,非常感谢你的帮助,并给了我一个很好的解决方案。谢谢谢谢很高兴我能帮忙。