2016-02-28 4 views
1

Я пытаюсь добавить подтверждение по электронной почте при регистрации пользователей. Пользователи должны заполнить форму своим кодом приглашения и адресом электронной почты, а затем получить электронное письмо с ссылкой активации.format.js не выполняется (ajax)

Итак, все, что я хочу сделать, так это, когда пользователь заполняет форму, он отправляет форму и перезагружает форму, чтобы она скрывалась и отображает сообщение «мы отправили вам электронное письмо, пожалуйста, проверьте и нажмите link "вместо перезагрузки всей страницы.

signup.html.erb

здесь я добавил удаленный: правда

<%= form_tag(form_action, method: :get, remote: true, id: 'create-form') do %>

users_controller.rb

о перенаправлении работ, но format.js является неизвестный формат

def new 

... code checking params 

if @user.user_email_confirmed 
    render :new 
else 
    respond_to do |format| 
    format.html { redirect_to signup_path(@user.name, email: @user.email) } 
    format.js 
    end 
end 

new.js.erb

$('#create-form').hide().after(''); 
$('.login-form').append('<p class="link-sent">We have sent an activation link to the email address you entered - please be sure to check your spam or trash folders. Please click that link to complete account activation.</p>'); 

не уверен, что мне не хватает, какие-либо идеи?

+0

Когда вы нажмете кнопку «отправить» в своей форме, вы уверены, что ваше «новое» действие вызвано, я действительно так не считаю !! – SsouLlesS

+0

Пожалуйста, проверьте, есть ли у вас какое-то 'before_action' или какой-либо другой обратный вызов в контроллере, который может вызывать проблемы – SsouLlesS

+0

Я уверен, что кнопка отправки вызывает новое. Действие формы указывает на новый маршрут пользователей #. – cvDv

ответ

1

Я действительно не думаю, что действие, которое форма вызывает при отправке, является вашим действием new, это может быть какое-то действие create в вашем контроллере.

Так что, когда вы нажмете кнопку «Отправить» вашу форму его отправки через Ajax из-за вас есть remote: true варианта, и действие его вызов не имеет format.js ни js.erb вида, Вот почему вы получите неизвестный формат.

Убедитесь, что действие контроллера вызывается при отправке формы, затем добавьте format.js и соответствующий вид js.erb.

Пожалуйста, взгляните на это blog post, это может быть полезно.