0

私のアプリケーションでは、ユーザーがコメント (クラス Newcomments) を投稿できるプロジェクトがあります。現在、投稿は素晴らしいですが、ページの更新中です。ページを更新せずに投稿できるように、AJAX/JQUERY を使用しようとしています。このrailscastsチュートリアルに従っています。

そのため、現在、投稿がデータベースに作成されており、ページが更新されていません。しかし、更新すると投稿が表示されます。特定のプロジェクトのコメントをレンダリングするページは、projects/_comments.html.erb にあります。

質問: 新しいコメントがレンダリングされるようにするには、どうすれば調整できますか?

newcomments_controller.rb

def create
  @newcomment = @commentable.newcomments.new(params[:newcomment])

  if @newcomment.save   
         respond_to do |format|
           format.html { redirect_to comments_project_path(@commentable) }
           format.js
         end
  else
     render :new
  end
end

ビュー/newcomments/_form.html.erb

<span class="comment">
<%= form_for [@commentable, @newcomment], remote: true do |f| %>
    <%= f.text_area :content, rows: 3, :class => "span8" %>
    <%= f.hidden_field :user_id, :value => current_user.id %>
    <%= f.submit "Add Comment", :class => "btn btn-header" %>       
<% end %>
</span>

ビュー/newcomments/create.js.erb

$('#newcomment').append('<%= j render(@newcomments) %>');

projects_controller.rb

def comments
  @commentable = @project
  @newcomments = @commentable.newcomments.newest.page(params[:comments_page]).per_page(10)
  @newcomment = Newcomment.new

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @project.comments }
  end
end

プロジェクト/コメント.html.erb

<%= render 'comments' %>

プロジェクト/_comments.html.erb

<%= render @newcomments %>

ビュー/newcomments/_newcomment.html.erb

<div class="comments"> 
    <%= link_to newcomment.user.name %></strong>
    Posted <%= time_ago_in_words(newcomment.created_at) %> ago
    <%= newcomment.content %>
</div>

<span class="comment">
    <%= form_for [@commentable, @newcomment] do |f| %>
      <div class="field">
        <%= f.text_area :content, rows: 3, :class => "span8" %>
      </div>

      <%= f.hidden_field :user_id, :value => current_user.id %>

      <div class="actions">
        <%= f.submit "Add Comment", :class => "btn btn-header" %>
      </div>

    <% end %>

    <% unless newcomment.newcomments.empty? %>
       <%= render @newcomments %>
    <% end %>
</span>
4

1 に答える 1