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

Lau*_*ent 1 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", :venue => @restaurant, :limit => @restaurant.reviews.count) %>');
    });
});
Run Code Online (Sandbox Code Playgroud)

问题:代码不是向我显示列表,而是将Rails代码作为文本返回.所以在我的屏幕上,我没有看到用户列表,而是看到:

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

这可能是一个简单的 - 我会很感激.

Tho*_*son 6

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

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

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

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

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

这样服务器就会发送一个脚本请求,它运行脚本(服务器端)并将输出(html)传递给可以呈现它的javascript(客户端).