2

ユーザーが投稿にコメントできるようにしたいと思います。各提出物の下に、「コメント(2)」というリンクが必要です。このリンクをクリックすると、コメントが動的に読み込まれ、新しいコメントを追加するための簡単なフォームが表示されます。ユーザーが新しいコメントを送信すると、リストの一番下に非同期で読み込まれるようにします。

私が今それをどのように機能させているかは次のとおりです:

// index.html.erb

<p class="comments_view_toggle">
  <%= link_to_remote("▼ view comments (#{answer.comments.count})", :controller => "comments", :action => "show", :submission => submission, :update => "comment")  %>
</p>

// comments_controller.rb

  def show
    @submission = Submission.find(params[:submission])
    respond_to do |format|
        format.html { redirect_to root_url }
        format.js
    end
  end

// show.rjs

page.insert_html :bottom, :comment, :partial => 'show', :locals => { :submission => @submission }

// _show.html.erb

    <ul id="comment_list">
        <%= render :partial => 'comments/comment', :collection => submission.comments  %>
    </ul>

    <div class="clear"></div>

        <% form_remote_for Comment.new do |f| %>
            <%= hidden_field_tag(:submission_id, answer.id)%>
            <%= hidden_field_tag(:user_id, current_user.id)%>
            <%= f.text_area :message %>
            <%= f.submit "comment", :disable_with => 'commenting...' %>
        <% end %>

トグル機能の2番目の部分(非表示)についてはまだ作業していません。リンクをクリックするたびに、部分を実行するだけでなく、リンクの下にページ全体が再読み込みされるため、理由がわかりません。パラメータを正しく渡していないようです。私はこれについてすべて間違っていますか?私を正しい方向に向けてもらえますか?

4

1 に答える 1

1

これを行うには、デフォルトでレールが付属しているプロトタイプのajaxライブラリを使用します。または、JQueryでそれを実行することもできます。

これを行う1つの方法があります

次のHTMLページがあるとしましょう

<div id="submission">
  // your submission details goes here
</div>
//here you will have your link says "comments"
<div id="comments">

</div>

「コメント」リンクをクリックすると、link_to_remoteを使用して、コメントdiv内のすべてのコメントをロードできます。

例:link_to_remote "View Comments"、:update => "comments"、:url => {:action => "comments"、:id => subject.id}

コントローラーは次のようになります

class SubmissionsController < ApplicationController
    #your other code goes here

   def list
     #code to generate the comments list
     render :partial => 'comments_list', :object => @comments
   end
end

リストコメント「_comments_list」の部分を含めることができます

于 2010-09-12T08:36:10.570 に答える