我想防止用户删除X分钟以上的评论。 (这是由状态字段决定的。)我预计X的值将来可能会更改,因此目前已在初始化程序中定义:
AGE = 1.minute
将错误消息从Comment控制器传递到(服务器生成的Javascript响应)视图的最佳方法是什么?
if @comment.status == "locked"
render "comments/too-old", locals: {message: "You can't delete this comment now as it's more than #{time_ago_in_words(AGE.ago)} old."}
end
当前此操作失败,因为我们不允许在控制器中使用 time_ago_in_words :
未定义的方法“ time_ago_in_words”
答案 0 :(得分:1)
方法time_ago_in_words
来自ActionView::Helpers::DateHelper
助手,它将自动包含在视图中。
如果您需要从控制器访问此方法,则需要在控制器中包含此帮助程序。
假设控制器名称为 CommentsController ,操作名称为 destroy :
include ActionView::Helpers::DateHelper
class CommentsController < ApplicationController
def destroy
...
if @comment.status == "locked"
render "comments/too-old", locals: {message: "You can't delete this comment now as it's more than #{time_ago_in_words(AGE.ago)} old."}
end
...
end
end