0

私がやりたいのは、投稿されたコメントのクラスに以下の jquery 関数のみを適用する方法です。代わりに、関数はすべてのクラスに適用されています。

現在使用しているコードは次のとおりです。

コントローラ:

class CommentsController < ApplicationController

    def create

         @comment = Micropost.find(params[:comment][:micropost_id]).comments.build(params[:comment])
           respond_to do |format|
                 if @comment.save

                    unless params[:comment][:recipient].blank? # this will be blank when current user is commenting/replying on their own wall
                    recipient = User.find(params[:comment][:recipient])
                    UserMailer.new_wall_post_comment_notification(recipient, current_user).deliver if recipient.email_notification == 1 
                    end
                    format.js   { render :post_comment }
                    else
                    format.js   { render :form_errors }
                    end
           end
    end

end

jquery:

$.ajax({
    success: function(){
        $('.post_container').append('test <br />');
    }
});
<% sleep 1 %>

これは、単一のメイン マイクロポスト フォームに使用したコードに似ていますが、これには同じクラスを使用するコメントがいくつかあるため、テストは、投稿が作成されたばかりのものではなく、すべての post_containers に適用されます。「テスト」テキストは最終的に、ユーザーが投稿した実際のコメントを保持する div に置き換えられます。

通常は「this」を使用しますが、ここでは機能しません。

HTML:

<div class="post_content">
    <div class="post_container">
        <div class="userNameFontStyle">
            <%= link_to current_users_username.capitalize, current_users_username %> -
            <div class="post_time">
                <%= time_ago_in_words(m.created_at) %> ago.
            </div>
        </div>  
        <%=  simple_format h(m.content) %>
    </div>
    <% if m.comments.any? %>
    <% comments(m.id).each do |comment| %>
    <div class="comment_container">
        <%= link_to image_tag(default_photo_for_commenter(comment), :class => "commenter_photo"), commenter(comment.user_id).username %>
        <div class="commenter_content">
            <div class="userNameFontStyle">
                <%= link_to commenter(comment.user_id).username.capitalize, commenter(comment.user_id).username %> - <%=  simple_format h(comment.content) %>
            </div>
        </div>
        <div class="comment_post_time">
            <%= time_ago_in_words(comment.created_at) %> ago.
        </div>
    </div>
    <% end %>
    <% end %>
    <% if logged_in? %>
    <%= form_for @comment, :remote => true do |f| %>
    <%= f.hidden_field :user_id, :value => current_user.id %>
    <%= f.hidden_field :micropost_id, :value => m.id %>
    <%= f.text_area :content, :placeholder => 'Post a comment...', :class => "comment_box", :rows => 0, :columns => 0 %>
    <div class="commentButtons">         
        <%= f.submit 'Post it', :class => "commentButton" %>
        <div class="cancelButton">
            Cancel
        </div>
    </div>   
    <% end %>
    <% end %>
    </div>
</div>

どうすればこれに対処できますか?

敬具

4

1 に答える 1

0

特にそれを識別する目的で、変更したい特定の投稿のコンテナにクラスを追加できます。

my_post.parent().addClass("fixme");

じゃあ後で

container = $(".post_container.fixme");
// do stuff
container.removeClass("fixme");
于 2012-04-11T03:53:15.917 に答える