我試圖使用jQuery函數將部分代碼放入我的代碼中。 jQuery非常簡單,但是我怎樣才能輸入Rails代碼,這樣我就不必從頭開始編寫html了?將Rails代碼放入jQuery中
這是我到目前爲止有:
function addCommentBoxToID(myID)
{
$('#post' + myID + ' .postcontent tbody').append('I want to put rails code here');
}
謝謝!
我試圖使用jQuery函數將部分代碼放入我的代碼中。 jQuery非常簡單,但是我怎樣才能輸入Rails代碼,這樣我就不必從頭開始編寫html了?將Rails代碼放入jQuery中
這是我到目前爲止有:
function addCommentBoxToID(myID)
{
$('#post' + myID + ' .postcontent tbody').append('I want to put rails code here');
}
謝謝!
這不會是這樣做的方式。你不能在你的代碼中包含真正的jQuery。
jQuery是客戶端,Ruby on Rails代碼在服務器上執行。你不能執行Rails代碼true jQuery。
最接近你想要的,包括rails生成的html內容將使用一些ajax來調用你的rails應用程序,並給出一個命令來吐出一塊HTML。在railscasts.com上查看rails和ajax以獲取基本想法。
應用/視圖/帖/ 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 ...%>
否則它會隨着引號一塌糊塗/雙 - 引用等。
JavaScript通常在客戶端工作,但它也可能是您的應用程序爲每個客戶端繪製一個javaScript函數。在這種情況下,你可以使用<%=
和標籤%>
在.erb文件:
<script type="text/javascript">
$(function(){
new AClass.function({
text: <%= Date.today %>
});
});
</script>
這是Rails的最好的功能之一,它使Ajax請求很容易讓你的。你所要做的只是一個ajax請求,然後在服務器端返回一個包含post html的partial。 – cmwright
我實際上已經使用ajax插入每篇文章,但我認爲你是對的,我將不得不重新組織我的代碼的工作方式。 – Rob