2015-04-24 55 views
0

我正在開發一個簡單的論壇應用程序使用rails 4.0。我希望我的評論能夠發佈爲Ajax,而不是重新加載整個頁面,請幫助我。 這是我爲論壇Ajax發佈使用rails 4.0評論ForumThread

<div id="topic_content"> 
    <h1> 
    <%= @topic.title %> 
    </h1> 
    <p> 
    <%= @topic.content %> 
    </p> 
    <div id="comments"> 
    <h2> 
    <%= @topic.comments.count %> 
    Comments 
    </h2> 
    <%= render @topic.comments %> 
    <%if user_signed_in? && current_user.user? %> 
    <h3>Reply to thread</h3> 
    <%= render "comments/form" %> 
    <% end %> 
</div> 
<br/> 
<hr/> 
<br/> 
<%if user_signed_in?%> 
<% if can? :update, @topic %> 
    <%= link_to "Edit", edit_topic_path(@topic), class: "button" %> 
<% end %> 


<% if can? :delete, @topic %> 
<%= link_to "Delete", topic_path(@topic), method: :delete, data: {  confirm: "Are you sure you want to do this?" }, class: "button" %> 
<% end %> 
<% end %> 

</div> 

show.html.erb這是我_comment.html.erb部分

<div class="comment clearfix"> 
<div class="content"> 
<p class="comment_content"> 
    <%= comment.comment %> 
</p> 

</div> 
<div class="buttons"> 
<%if user_signed_in?%> 
<% if can? :update, @topic => Comment %> 
    <%= link_to "Edit", edit_topic_comment_path(comment.topic, comment) %> 
<% end %> 
<% if can? :delete, @topic => Comment %> 
    <%= link_to "Delete", [comment.topic, comment], method: :delete, data: { confirm: "Are you sure?" } %> 
    <% end %> 
<% end %> 
</div> 

+0

你的代碼的其餘部分在哪裏? – bodyfarmer

+0

你需要哪些文件請告訴我,以便我可以發佈它?我認爲這兩個文件就足夠了.......... – kali

+0

ajax評論通常是在js控制器中完成的。 – bodyfarmer

回答

0

你可以使用服務器生成的JavaScript和遠程形式。

  1. 添加remote: true到窗體
  2. 準備您的控制器使用JavaScript迴應:

    # CommentsController 
    
    def create 
        @comment = @topic.comments.create!(comment_params) 
        respond_to do |format| 
        format.html { redirect_to @comment } # no js fallback 
        format.js # renders comments/create.js.erb 
        end 
    end 
    
  3. 創建create.js.erb模板:

    # comments/create.js.erb 
    
    $('#comments').prepend('<%=j render @comment %>'); 
    

    這裏發生的是,我們告訴Rails將我們的評論(使用部分評論)呈現爲JavaScript準備好的字符串(請注意<%=j),並且我們正在創建JS,它會將此新評論預先渲染到comments div的開頭。嘗試用JS響應來做什麼?它在頁面的上下文中運行,所以你可以有很多樂趣。

而且閱讀文章在https://signalvnoise.com/posts/3697-server-generated-javascript-responses - 這是我知道了這種技術,並且毫無疑問你會發現示例代碼之間的相似性爲您的情況和他們的示例代碼。