0

わかりました、私はこのオフとオンの結果を一日中調べました(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 を使用していない場合に) カウンターを追加したところ、4 つのフィールド エラーが表示されました。何かアドバイス?問題のない別のプロジェクトで (従来のビューで) 同様のコードを使用する。

4

1 に答える 1