Метод Rails, который обрабатывает ajax и жалуется на отсутствие шаблона? - PullRequest
1 голос
/ 19 ноября 2011

У меня есть метод subscriber#create, который используется только для представления ajax (html-форма использует data-remote="true" для выполнения Ajax. Форма действительно отправляет, и данные заканчиваются в БД, но метод выдает ошибка, говорящая о том, что шаблон не найден.

Как я могу указать функцию как обработчик Ajax в Rails? - та, которая не должна отображать шаблон и т. Д.

Вот как выглядит метод:

class SubscribersController < ApplicationController

  def create
    Subscriber.create(:email          => params[:email],
                      :ip_address     => request.remote_ip,
                      :referring_page => request.referer ) unless Subscriber.find_by_email(params[:email])
  end

end

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

Вы должны правильно обработать вызов в вашем reply_to.

...
respond_to do |format|
  format.html 
  format.js   { :nothing => true }
end

Дело в том, что вы, вероятно, должны вернуть что-то .Даже если это AJAX-вызов, вы должны отправить что-нибудь обратно, чтобы звонящий узнал, что создание прошло успешно.

def create
  @subscriber = Subscriber.new(#your params)
  respond_to do |format|
    if @subscriber.save
      format.js { render :json => @subscriber, :status => :created, :location => @susbscriber }
    else
      format.js { render :json => @susbcriber.errors, :status => :unprocessable_entity }
    end
  end
end

Кроме того, вам не нужно вводить unless Subscriber.find_by_email(params[:email]) в вашем контроллере.,Вам нужно просто добавить validates_uniqueness_of :email к модели подписчика.

0 голосов
/ 19 ноября 2011

вы хотите что-то вроде render :layout => !request.xhr? в вашем контроллере, это предотвратит компоновку, если запрос ajax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...