在实施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
答案 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