簡體   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