2014-12-30 62 views
1

我已經瀏覽了這些類型的問題,但沒有一個適用於我。在HTML軌道中提交AJAX表單4

奇怪的是,相同的策略,以不同的形式完美地工作。

我有模型驗證的地方,但是當我提交一個空的表單時,我得到一個錯誤的ceeate格式爲HTML的模板。

我猜每個文件的目的都是不言自明的。

我ContactsController.rb:

class ContactsController < ApplicationController 
    respond_to :html, :js 
    def new 
    @contact = Contact.new 
    end 

    def create 
    @contact = Contact.new(params[:contact]) 
    @contact.request = request 
    end 
end 

new.js.ebr:

$("#main-block").html("<%= escape_javascript(render 'contact_form') %>") 

_contact_form.html.erb:

<div align="center"> 
    <h3>Sazinieties ar mums</h3> 
    <ul class="errors"></ul> 

    <%= form_for @contact, :html => {:class => 'form-horizontal' } do |f| %> 
     <div class="control-group"> 
     <%= f.label :name, class: "control-label" %> 
      <div class="controls"> 
      <%= f.text_field :name %> 
     </div> 
     </div> 
    <div class="control-group"><div class="field"> 
     <%= f.label :e_mail, class: "control-label" %> 
     <div class="controls"> 
      <%= f.email_field :e_mail %> 
     </div> 
    </div> 
    <div class="control-group"><div class="field"> 
     <%= f.label :message, class: "control-label" %> 
     <div class="controls"> 
      <%= f.text_area :message %> 
     </div> 
    </div> 
    <div> 
     </br> 
      <%= f.submit('Sūtīt', remote: true, class: "btn btn-primary") %> 
    </div> 
    <% end %> 
</div> 

create.js。 ERB:

<%= render 'save' %> 

_save.js.erb:

$("ul.errors").html("") 
<% if @contact.errors.any? %> 
    <% @contact.errors.full_messages.each do |message| %> 
    $("ul.errors").append($("<li />").html("<%= message.html_safe %>")) 
    <% end %> 
<% else %> 
    $("#main-block").empty() 
    $("#main-block").html("Ziņa ir nosūtīta. Tuvākajā laikā sniegsim atbildi!") 
<% end %> 

回答

0

您需要添加到您的形式:

<%= form_for @contact, :remote => true, :html => {:class => 'form-horizontal' } do |f| %> 

和遠程刪除:從您的提交按鈕真。

+0

謝謝。忘了你用遠程真正的形式。 – Kkulikovskis