Rails: две разные кнопки "Отправить" в форме

Я пытаюсь создать простую форму с двумя разными кнопками отправки: одна, которая будет выполнять обычную отправку, а другая, которая будет выполнять отправку с помощью ajax и визуализировать частичную часть. Но я не уверен, как это сделать, потому что оба идут к одному действию создания. Я попробовал что-то вроде этого:

/views/layouts/_form.html.erb:

<div id="theform">
<%= form_for(@user, :remote => true, :form_to_validate => 'user') do |f| %>

    Name: <div id='name'><%= f.text_field :name %></div><br/>
    Email: <div id='email'><%= f.text_field :email %></div><br/>
    Phone Number: <div id='phone_number'><%= f.text_field :phone_number%></div><br/>
    <%= f.submit "Normal Submit", name:'normal' %>
    <%= f.submit "Ajax Submit" %>

<% end %>
</div>

приложение / контроллеры /user_controller.rb:

class UsersController < ApplicationController

def new
    @user = User.new
end

def create
    @user = User.new(params[:user])
    if params[:normal]
        render :partial => "layouts/user"
    end
end

РЕДАКТИРОВАТЬ: это может показаться странной задачей, но это было задание, данное мне, чтобы продемонстрировать, что я могу сделать это в обоих направлениях. Я знаю, как сделать AJAX-отправку и обычную отправку отдельно, но я путаюсь с наличием двух отправок в форме!:)

2 ответа

Решение

Почему бы не написать какой-нибудь JS, который прослушивает щелчок или отправить, и вы направите его в JS, если его ajax $.ajax к местоположению ajax, иначе пропустите его нормально, если это не так, и не остановите распространение.

Я не думаю, что вам нужны две кнопки отправки. Пусть кнопка ajax просто вызовет метод $.ajax и отправит ваши данные.

Кроме того, вы могли бы вызвать кнопку AJAX $('#formid').submit() после преобразования формы в ajax, используя любой метод, который вы используете для этого. Это, вероятно, самый простой из двух методов.

Другие вопросы по тегам