如何使用x_editable_rails编辑注释

时间:2017-07-31 19:15:07

标签: ruby-on-rails ruby ruby-on-rails-5

在实施gem x_editable_rails以允许编辑评论而不将用户带到单独的编辑页面时,我不确定为什么我会收到此error message

x_editable_rails演示应用程序显示可能正确的方式应该是<%= editable @comment, :content %>,,但因为我正在循环@comments实例变量中的所有注释,这样做也会引发错误。

修改

我将代码行从<%= editable @comments.comment %>更改为<%= editable [comment.article, comment], :content, url: edit_article_comment_path(comment.article, comment) %>,现在,它的显示 undefined method `xeditable?' error

我添加了下面的帮助方法,并将此(helper_method:xeditable?)添加到应用程序控制器。 (我不使用康康,所以我添加了一个假的罐子?按照stackoverflow post的建议。

module ApplicationHelper

def xeditable?
  current_user.xeditable?
end

  def can?(role, object)
     true 
  end
end

_comments.html.erb

<% @comments.each do |comment| %>
  <%= editable [comment.article, comment], :content, url: edit_article_comment_path(comment.article, comment) %>
  <%= link_to "Delete comment", [comment.article, comment], method: :delete %>
  <%= link_to "Edit comment", edit_article_comment_path(comment.article, comment) %>
<% end %>

的routes.rb

  resources :articles do
    resources :comments
  end

1 个答案:

答案 0 :(得分:0)

路由

您发布的原始错误表示您没有APP_DOMAIN/comments/:id的路线,并且您的路线确认了这一路线 - 评论是您路线中的嵌套资源,路由类似APP_DOMAIN/articles/:id/comments/:id

请注意,对于异常路由(即不是典型的Rails命名模式),x-editable-rails allows you to specify your path。也许评论通过其他名称进行路由,例如url: post_critique_path(@comment.post, @comment)。我看到你现在已经这样做了,虽然我不确定是否有必要,因为你的路由是标准的实践。

请注意,我自己没有对此进行过测试。自述文件不清楚:url的允许值或预期值是什么。令人困惑的是,宝石有一个:nested选项 - which appears to be about setting the title HTML attribute

应用程序助手方法

对于您的下一个错误,您似乎正在实施this answer的建议。但是我相信你错过了一行,你的ApplicationHelper模块应该是这样的:

module ApplicationHelper

  helper_method :xeditable?, :can

  def xeditable?
    current_user.xeditable?
  end

  def can?(role, object)
     true 
  end
end