1

本質的に、私は好き/嫌いのバイナリ投票システムを持っています。あなたのクラスは呼び出さLikeます

class Like < ActiveRecord::Base
     belongs_to :likeable, polymorphic: true
end

また、コメントComment可能へのポリモーフィックな関連付けがあり、好きになることができるクラスがあります

class Comment < ActiveRecord::Base
     belongs_to :commentable, polymorphic: true
     has_many :likes, :as :likeable
end

私たちはクラスを持っていますSection。これは好きでコメントすることもできます

class Section < ActiveRecord::Base
    has_many :likes, as: :likeable
    has_many :comments, as: commentable
end

ただし、ページsection#showには、セクション情報、セクションのいいね、そしてコメント (comments/commentsパーシャルから) が表示されます。Section#showビューは次のとおりです。

<h1><%= exercise.name %></h1>
<p><%= exercise.description %></p>
<%= render 'likes/like_button' %>
<%= render 'comments/comments' %>
<%= render 'comments/comment_form' %>

ただし、各コメントに投票する機能が必要です。

次のコードは からのものです - 現在機能しないのは、手元のコメントに適用されないため_comments.html.erb、 のレンダリングです。_like_button.html.erb

<% @comments.each do |comment| %>
    <%= comment.content %>
    <%= render 'likes/like_button' %>
<hr />
<% end %>

そして、ここに_like_button.html.erb部分的なものがあります

<% if @like.nil? %>
    <%# No record of Like in table %>
    <%= form_for [@likeable, Like.new] do |f| %>
    <%= f.submit "Like" %>
    <%= f.submit "Dislike" %>
    <% end %>
<% else %>
    <%# Marks current chosen option, if the opposite option is chosen, the record is updated to reflect the descion by the user %>
    <%= form_for [@likeable, @like] do |f| %>
        <% if @like.is_liked %>
            Currently Liked!
            <%= f.submit "Dislike" %>
        <% else %>
            <%= f.submit "Like" %>
            Currently Disliked!
        <% end %>
    <% end %>
<% end %>

最終的には、ビュー内からコメントに投票できるようにする方法を知りたいだけですSection#showありがとう!

4

1 に答える 1

1

これを試して:

<% @comments.each do |comment| %>
    <%= comment.content %>
    <%= render 'likes/like_button', :like => comment.like, :likeable => comment %>
<hr />
<% end %>

<% if like.nil? %>
    <%# No record of Like in table %>
    <%= form_for [likeable, Like.new] do |f| %>
    <%= f.submit "Like" %>
    <%= f.submit "Dislike" %>
    <% end %>
<% else %>
    <%# Marks current chosen option, if the opposite option is chosen, the record is updated to reflect the descion by the user %>
    <%= form_for [likeable, like] do |f| %>
        <% if like.is_liked %>
            Currently Liked!
            <%= f.submit "Dislike" %>
        <% else %>
            <%= f.submit "Like" %>
            Currently Disliked!
        <% end %>
    <% end %>
<% end %>
于 2012-06-30T00:29:44.077 に答える