0

モデルの 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)

どんな助けでも素晴らしいでしょう。

4

1 に答える 1