【问题标题】:Rendering model errors like JSON in js template在 js 模板中渲染模型错误,如 JSON
【发布时间】:2013-06-13 23:38:04
【问题描述】:

我正在提交带有 data-remote=true 属性的表单。控制器中的 create 操作如下所示:

format.js { @user }

它由以下模板处理:

create.js.erb

是否有一种简单的方法可以像 JSON 一样呈现 @user.errors 消息,以便在当前模板中使用以下 JSON 并处理错误?

我知道我可以使用 format.json 指令呈现错误,但我想做其他 JavaScript 操作,不仅呈现错误,因此我使用 format .js 技术。

【问题讨论】:

    标签: ajax json ruby-on-rails-3 model error-handling


    【解决方案1】:

    这可以通过使用to_json 方法轻松解决。为了渲染传递的模型对象,我只应该这样做:

    var current_errors = <%=  @security_user.errors.to_json %>;
    

    无论如何,这仍然没有呈现正确的 JSON,因为引号是由 rails 自动编码的(以防止 XSS),因此您应该使用以下方法之一:

    1. html_safe
    2. raw
    3. h

    可以在此处找到有关它们的更多信息 - raw vs. html_safe vs. h to unescape html

    对我有用的最终解决方案是:

    var current_errors = <%=  raw @security_user.errors.to_json %>;
    

    【讨论】: