как получить страницу результатов в JQuery - PullRequest
0 голосов
/ 22 февраля 2019

Страница успеха перенаправляется на ту же страницу после контроллера: create и страница ошибок отображаются на «новой» странице.Поэтому я хочу эту страницу ошибок на той же самой странице.Так как же получить страницу результатов в jquery ajax?и как решить данный код jquery, чтобы получить страницу результатов?

projectdir
  -app
   -views
    -contact-us
         -contact_mailer
            #somefiles
         -contacts
             new.html.erb

new.html.erb

<%= form_for @contact, :url => contacts_path, :html => {:class => 
'formtastic'}, remote: true, id: "contactform" do |f| %>

 <% if ContactUs.require_name %>
    <div class='string required' id='contact_us_contact_name_input'>
      <%= f.label :name, (t('.name') + content_tag(:abbr, '*', :class => 
         'required')).html_safe %>
      <%= f.text_field :name %>
      <% if f.object.errors[:name].present? %>
        <p class='inline-error'><%= f.object.errors[:name].join(' and ') %> 
        </p>
       <% end %>
    </div>
 <% end %>  

# --- remaining lines for email,message

<div class='commit'>
<%= f.submit :submit, :class => 'submit 
    create', :title => t('.submit'), :value => t('.submit') %>
 </div>

<div class="content">
  <% flash.each do |key, msg| %>
    <%= content_tag :div, msg, :class => [key, " message"], :id => "notice_#{key}" %>
  <% end %>
</div>

контроллер gem / contact_us / contacts_controller.rb встроенный метод создания

class ContactUs::ContactsController < ApplicationController
 def create
 @contact = ContactUs::Contact.new(params[:contact_us_contact])

if @contact.save
  redirect_to(ContactUs.success_redirect || '/', :notice => t('contact_us.notices.success'))
else
  flash[:error] = t('contact_us.notices.error')
  render new
end
end

application.js

$('#contactform').submit (e) ->
e.preventDefault()
console.log "submitted form."

$.ajax
  url: '/contacts'
  type: 'POST'  
  data:
    name: $(this).find("input[name='name']").val()
    email: $(this).find("input[name='email']").val()
    message: $(this).find("textarea[name='message']").val()
  success: (result) ->
    $("#contactform").html(result);
  error: (result) ->
    alert("couldn't send your message.") 
...