首页 > 解决方案 > 如何在 JS 警报标签中引用 ruby​​ 代码

问题描述

我是 JS 新手,想知道是否有人可以帮我解决这个警报?

<% if @candy.errors %>
    <%= javascript_tag do %>
      alert('<%= @candy.errors.full_messages %>')
    <% end %>
  <% end %>

这就是警报中出现的所有内容:[]

标签: javascriptruby-on-railsalert

解决方案


<% if @candy.errors %>将始终返回一个真实值。它返回的值是ActiveModel::Errors. 说实话,我的意思是它永远不会返回 false 或 nil,因此您的警报将始终显示......即使@candy 没有错误。

.any?如果没有错误,您需要添加以返回 false。

<% if @candy.errors.any? %>

如果我对您正在使用的没有错误的假设@candy是正确的,那么任何时候都不应该显示警报?被添加。

要手动向@candy 添加错误,请在<% if @candy.errors.any? %>...之前添加此行

<% @candy.errors.add :base, "Test" %>

如果弹出警报,那么问题只是@candy没有错误,并且您的调用@candy.errors.full_messages正确返回了一个空数组。


推荐阅读