2016-02-28 63 views
1

我想在注册用户时添加电子邮件确认。用户必须使用他们的邀请码和电子邮件地址填写表格,然后他们会收到一封包含激活链接的电子邮件。format.js不执行(ajax)

所以我想要做的就是让用户填写表单,然后提交表单并重新加载表单,以便隐藏和显示消息“我们向您发送了一封电子邮件,请检查并单击链接“而不是重新加载整个页面。

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

当你点击窗体中的“提交”按钮时,你确定你的'new'动作被调用,我真的不这么认为! – SsouLlesS

+0

请检查您的控制器中是否有'before_action'或任何其他回调,可能导致问题 – SsouLlesS

+0

我很确定提交按钮调用新的。表单操作指向用户#新路由。 – cvDv

回答

1

我真的不认为提交时表单调用的动作是您的new动作,可能是您的控制器中的一些create动作。

所以,当你打你的形式,它是通过Ajax由于你送的“提交”按钮有remote: true选项,并呼吁没有format.js也不js.erb视图的动作,这就是为什么你未知格式。

确保在提交表单时要调用哪个控制器操作,然后添加format.js和正确的js.erb视图。

请看看这个blog post,可能会对您有帮助。