我正在開發我的Rails應用中的評論功能。我想在點擊發布按鈕後立即向用戶顯示評論。 我有一個創建按鈕的表單,我想用JQuery_ujs顯示註釋。什麼是最好的辦法呢?在同一頁面上使用jquery_ujs顯示評論
這是創建comment動作:
def create_comment
params.permit!
@article = Article.find(params[:article][:id])
@comment = Comment.create(params[:comment])
@comment.article_id = @article.id
if @comment.save
render :text => 'created', :status => 202 and return
else
render :text => "not created", :status => 203 and return
end
end
這是jQuery腳本:
$(document).ready(function(){
$('#submit').click(function (e) {
e.preventDefault();
var commentor =this.comment_commentor.val();
var comment =this.comment_content.val();
$.ajax({
type: "POST",
url: '<%=create_comment_comment_index_path%>',
// send the last id to our rails app
data: {
commentor: commentor,
comment: content,
},
complete: function(jqXHR, textStatus){
if(jqXHR.status == "203"){
//invalid
}else if(jqXHR.status == "202"){
//valid
$('#comments').append("<div class='well'>
<p class='text-muted'>Added by <strong><%[email protected]%></strong> on <%= l(@comment.created_at, format: '%B, %d %Y %H:%M:%S') %>
</p>
<blockquote>
<p><%=comm.content%></p>
</blockquote>
</div>");
}
}
});
});
});
我這是怎麼表現的評論:
<div id="comments">
<%@article.comments.each do |comm|%>
<div class="well">
<p class="text-muted">Added by <strong><%=comm.commentor%></strong> on
<%= l(comm.created_at, format: '%B, %d %Y %H:%M:%S') %></p>
<blockquote>
<p><%=comm.content%></p>
</blockquote>
</div>
<%end%>
</div>
形式創建評論:
<%= form_for(:comment, :url => create_comment_comment_index_path) do |f| %>
<input type="hidden" value="<%=params[:id]%>" name="article[id]">
<div class="field">
<%= f.text_field :commentor,:class=>"form-control", :required=>"true"%>
</div>
<br>
<div class="field">
<%= f.text_area :content,:class=>"form-control", :required=>"true"%>
</div>
<br>
<div class="actions">
<%= f.submit "create",:id=>"submit",:class=>"btn btn-lg btn-primary "%>
</div>
<% end %>
請出示你的HTML編輯 –
我的問題,我'不知道,如果代碼是好的,我尚未對其進行測試。 – Joma
你的方法是正確的。最好的方法是使用Ajax,然後在成功回調函數中,您可以傳遞服務器返回的數據。這裏有兩種選擇,你可以在服務器端生成新的註釋HTML,並將其作爲文本返回,然後將數據附加到元素或做你現在正在做的事情。你可以使用瀏覽器的控制檯來調試你的Javascript。 –