2011-11-22 65 views
1

我試圖使用jQuery函數將部分代碼放入我的代碼中。 jQuery非常簡單,但是我怎樣才能輸入Rails代碼,這樣我就不必從頭開始編寫html了?將Rails代碼放入jQuery中

這是我到目前爲止有:

function addCommentBoxToID(myID) 
{ 
    $('#post' + myID + ' .postcontent tbody').append('I want to put rails code here'); 
} 

謝謝!

回答

5

這不會是這樣做的方式。你不能在你的代碼中包含真正的jQuery。

jQuery是客戶端,Ruby on Rails代碼在服務器上執行。你不能執行Rails代碼true jQuery。

最接近你想要的,包括rails生成的html內容將使用一些ajax來調用你的rails應用程序,並給出一個命令來吐出一塊HTML。在railscasts.com上查看rails和ajax以獲取基本想法。

+0

這是Rails的最好的功能之一,它使Ajax請求很容易讓你的。你所要做的只是一個ajax請求,然後在服務器端返回一個包含post html的partial。 – cmwright

+0

我實際上已經使用ajax插入每篇文章,但我認爲你是對的,我將不得不重新組織我的代碼的工作方式。 – Rob

2

應用/視圖/帖/ show.html.erb

<%= form_for([@article, @article.comments.build], remote: true) do |f| %> 
.... (the fields for the comment) 
<% end %> 

應用程序/控制器/ comments_controller.rb

def create 
    @article = Article.find params[:article_id] 
    @comment = @article.comments.build(params[:comment]) 
    if @comment.save 
    respond_to do |format| 
     (other formats) 
     format.js 
    end 
    else 
    render 'articles/show' 
    end 
end 

應用/視圖/評論/ create.js.erb

$('#post' + myID + ' .postcontent tbody').append('<%=j render @comment %>') 

或者如果你想把變量的內容:

$('#post' + myID + ' .postcontent tbody').append('<%=j @comment.content %>') 

應用程序/意見/評論/ _comment.html.erb

(your partial) 

不要忘了逃跑的javascript:

<%=j ... %> or (a bit longer) <%=escape_javascript ...%> 

否則它會隨着引號一塌糊塗/雙 - 引用等。

2

JavaScript通常在客戶端工作,但它也可能是您的應用程序爲每個客戶端繪製一個javaScript函數。在這種情況下,你可以使用<%=和標籤%>在.erb文件:

<script type="text/javascript"> 
$(function(){ 
    new AClass.function({ 
     text: <%= Date.today %> 
    }); 
}); 
</script>