0

私は ror で Web を開発しており、コメントを ajax しようとしました。Web には、コメント付きのブランドと製品があります。最初に、ブランドのコメントを ajax してみました。

ブランドのモデル

class Brand < ActiveRecord::Base
  attr_accessible :name
  has_many :products, :dependent => :destroy
  has_many :comments, :dependent => :destroy

  validates :name, :presence => true
end

コメントのモデル

class Comment < ActiveRecord::Base
  attr_accessible :body, :brand_id, :product_id, :user_id
  belongs_to :brand
  belongs_to :product

  validates :brand, :presence => {:unless => :product_id?, :message => "The comment must belongs to a brand or product"}
  validates :product, :presence => {:unless => :brand_id?, :message => "The comment must belongs to a brand or product"}
  validates :body, :presence => true
end

コメント コントローラーの作成

  def create
    @comment = Comment.new(params[:comment])
    @brand = Brand.find(params[:comment][:brand_id])

    respond_to do |format|
      if @comment.save
        @comments = @comment.brand.comments
        format.html { redirect_to @brand, notice: 'Comment was successfully created.' }
        format.json { render json: @comment, status: :created, location: @comment }
        format.js { render @brand}
      else
        format.html { render action: "new" }
        format.json { render json: @comment.errors, status: :unprocessable_entity }
      end
    end
  end

ビュー/ブランド/_comments

<div class="well">
  <%= simple_format comments.body %>
  <%= link_to 'Edit', edit_comment_path(comments), :class => 'btn btn-mini btn-success' %>
  <%= link_to 'Destroy', comment_path(comments), :method => :delete, :data => {:confirm => 'Are you sure?'}, :class => 'btn btn-mini btn-danger' %>
</div>

ビュー/コメント/create.js.rjs

$("#comments").html("<%= escape_javascript(render :partial => "comments", :collections => @comments) %>");

ビュー/ブランド/ショー

<h2>Comments</h2>
<div id="comments">
  <%= render :partial => "comments", :collection => @comments %>
</div>
<p></p>

<div id="comment-form">
  <%= form_for @comment, :remote => true do |f| %>
    <%= f.hidden_field :brand_id %>
    <div class="field">
      <%= f.text_area :body, :size => "25x5"%>
    </div>
    <div class="field">
      <%= f.submit 'Enviar comentario', :class => 'btn btn-success' %>
    </div>
  <% end  %>  
</div> 

しかし、新しい製品を作成すると、ページがリロードされました。本当にありがとうございました!

4

0 に答える 0