无法显示Rails ActiveRecord errors.full_message中的文本

时间:2012-08-08 22:51:19

标签: ruby-on-rails validation activerecord

好的,我已经整天查看结果(包括搜索StackOverflow)......

在Rails 3.2.X和Ruby 1.9.3中,我有一个远程表单。表单工作正常并在有效时保存,在无效时不保存。但是我无法收回实际的错误(我尝试了很多不同的方法)。

这是表格(haml)

= form_for @lead, :remote => true, :validate => false do |f|
    .span6
        %ul
            %li
                = f.label "Name*"
                = f.text_field :name
            %li
                = f.label "Company*"
                = f.text_field :company
...
            %li
                = f.label :state
                = select_tag :state, options_for_select(us_states)
            %li
                = f.label "Email*"
                = f.text_field :email
    .actions
        = f.submit '', :id => "contactsubmit"

这是控制器中的相关位置:

def create
    @lead = Lead.new(params[:lead])

    respond_to do |format|
        if @lead.valid?
         format.js
        else
         format.js
        end
    end
end

这是我的观点(create.js.erb),我一直在失败......

<% if @lead.errors.count == 0 %>
    $('#error_explanation').fadeOut(500);
    $('#learn-more .form').fadeOut(500, function() {
        $('#learn-more #form-response').fadeIn(500);
      });
<% else %>
      $('#error_explanation').fadeIn(500);
        <% @lead.errors.full_messages.each do |msg| %>
           #never shows any messages. If I do @lead.errors.each do |error| 
           #it shows the field name, but not the body...?
           $('#error_explanation').append('<%=content_tag(:p, msg)%>');
        <% end %>
<% end %>

我知道那里的通知是无效的,我添加它以显示我尝试过的内容。 我已经尝试了百万种不同的方式在这里显示错误消息。其他一切都在发挥作用。我甚至在那里添加了一个计数器(当不使用msg时)它确实显示了四个字段错误。有什么建议?在另一个项目中使用类似的代码(在传统视图中)没有问题。

1 个答案:

答案 0 :(得分:0)

确保在遇到此类麻烦时随时使用escape_javascript。任何可能在内容中或由content_tag等方法生成的引号都可能会破坏您的JS。