モデルの 1 つでコメントを処理するために、 Opinio gemを使用しています。また、承認には cancan を使用しています。
コメントを追加することはできますが、問題はありませんが、コメントを削除する方法がわかりません。「無許可」というテキスト文字列が返されるだけです。それでおしまい。
ここに私のレンダリングコードがあります:
<!-- _comment.html.erb (generated by Opinio) -->
<% reply = defined?(reply) ? reply : false %>
<dt id="comment_<%= comment.id %>"><%= link_to comment.owner.name, comment.owner %></dt>
<dd class="well">
<%= simple_format(comment.body) %>
<% if can? :delete, comment%>
<%= link_to t('opinio.actions.delete'), comment_path(comment), :method => :delete%>
<% end %>
<% if Opinio.accept_replies && !reply %>
<span><%= link_to t('opinio.actions.reply'), reply_comment_path(comment), :remote => true %></span>
<ul id="comment_<%= comment.id %>_replies" class="replies">
<%= render :partial => "opinio/comments/comment", :collection => comment.comments, :locals => {:reply => true} %>
</ul>
<% end %>
</dd>
奇妙なことに、私の最初のif can? :delete, comment
作品は削除リンクを取得します。:remote => true
実際に何が起こっているのかを確認できるように、ここを削除しました。
これは私の能力です.rb:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
can :access, :rails_admin # grant access to rails_admin
can :dashboard
else
can :read, :all
can :delete, Comment, :owner_id => user.id
end
end
end
opinio のソースコードを調べたところ、失敗していると思われるテストが見つかりました。
#In opinio gem: comments_controller.rb
if can_destroy_opinio?(@comment)
どんな助けでも素晴らしいでしょう。