2

フォーム付きのモーダルがあり、検証エラーなしで送信した後、モーダルを閉じて新しい結果でページを更新しようとしています。しかし、私はそれを機能させることができません。私はこのコードを持っています(Rails 3):

私のコントローラー:

    def create

    @stuff = Stuff.new(params[:stuff])

       respond_to do |format|
          if @stuff.save
             format.js 
          else
             format.js
          end
       end
     end

_addModal.html.erb

<div id="addModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Label</h3>
    </div>
        <div class="modal-body">
            <p>
                <fieldset>
                <label></label>
                <%= render 'form2' %>    
                </fieldset>
            </p>
        </div>
    </div>

_form2.html.erb

%= form_for(@stuff, :remote => true) do |f| %>

   <% if @stuff.errors.any? %>
     <div id="error_explanation">
       <div class="alert">
          <h2><%= @stuff.errors.count %></h2>

        <ul>
          <% @stuff.errors.full_messages.each do |msg| %>
           <li><%= msg %></li>
          <% end %>
        </ul>
            </div>
          </div>
               <% end %>

     <%= f.label :name %><br />
     <%= f.text_field :name %>


    <%= f.submit %>

  <% end %>

create.js.erb

<%- if @stuff.errors.any? %>

           $('#addModal').html('<%= escape_javascript(render :partial => "form2") %>');

           <%- else %>

          $('#addModal').modal('hide').empty();


          <%- end %>

これを機能させる方法はありますか?

ありがとう!

アップデート:

また、いくつかの質問がありました。1)検証エラーが発生した場合、create.js.erbは「form2」コンテンツのみを含む新しいモーダルを返します。#addModalレイアウトは含まれません。どうすれば修正できますか?

2)提出が成功した後、どのようにしてフォームをクリアできますか?

4

1 に答える 1

2

これをjs.erbファイルに追加して、ページを自動的にリロードします

<%- if @stuff.errors.any? %>
  $('#addModal').html('<%= escape_javascript(render :partial => "form2") %>');
<%- else %>
  $('#addModal').modal('hide').empty();
  window.location.reload();
<%- end %>
于 2013-02-10T03:34:25.737 に答える