format.js没有执行(ajax)

时间:2016-02-28 18:52:59

标签: javascript jquery ruby-on-rails ajax

我在注册用户时尝试添加电子邮件确认。用户必须使用邀请代码和电子邮件地址填写表单,然后他们会收到包含激活链接的电子邮件。

所以我想做的就是拥有它,所以当用户填写表单时,它会提交表单并重新加载表单,以便它隐藏并显示消息"我们发送了一封电子邮件,请检查并点击链接"而不是重新加载整个页面。

signup.html.erb

这里我添加了remote:true

<%= 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>');

不确定我缺少什么,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

因此,当您点击表单的“提交”按钮时,由于您拥有remote: true选项,它将通过Ajax发送,并且它正在调用的操作没有format.js也没有{{1这就是为什么你会得到未知的格式。

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

请查看此blog post,这可能会有所帮助。