2013-02-09 3 views
2

У меня модальная форма и после отправки ее без ошибки проверки. Я пытаюсь закрыть Modal и обновить страницу новыми результатами. Но я не могу заставить его работать. У меня есть этот код (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 %> 

Любые идеи, как я могу заставить это работать?

Спасибо!

Обновление:

Также я получил несколько quetions: 1) В случае, если есть ошибки проверки create.js.erb возвращает новый Modal с содержанием 'Form2' только- без макета #addModal. Как я могу это исправить?

2) Как можно очистить форму после успешной подачи?

+0

Есть ли какие-либо ошибки или что-то в вашем терминале, пытаясь это? –

+0

Я не вижу проблем с вашим кодом. вы просто хотите узнать, как обновить страницу? – jvnill

+0

Ошибка отсутствует. Но когда я отправляю форму, она просто закрывается, и мне нужно обновить страницу вручную, чтобы увидеть новые результаты в таблице просмотра. Я хочу сделать это автоматически. –

ответ

2

добавить это в вашем файле js.erb, чтобы перезагрузить страницу автоматически

<%- if @stuff.errors.any? %> 
    $('#addModal').html('<%= escape_javascript(render :partial => "form2") %>'); 
<%- else %> 
    $('#addModal').modal('hide').empty(); 
    window.location.reload(); 
<%- end %> 
+0

И как я могу перезагрузить не всю страницу, а только один частичный i.e.table.html.erb внутри? –

+0

То же самое, что вы сделали с формой, частичной в вашем коде, когда @stuff имеет ошибки – jvnill

+0

Но что я должен применять? .html ('<% = escape_javascript (render: partial => "table")%>'); ' к? В window.location? –

Смежные вопросы