Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails重定向不作为HTML进行_Javascript_Ruby On Rails_Redirect_Format - Fatal编程技术网

Javascript Rails重定向不作为HTML进行

Javascript Rails重定向不作为HTML进行,javascript,ruby-on-rails,redirect,format,Javascript,Ruby On Rails,Redirect,Format,我有一个注册表单,如果注册成功,应该将用户重定向到他们的个人资料。如果注册失败,我想在不使用Javascript重新加载页面的情况下显示一条错误消息 这是我的表格标题: <%= form_for resource, as: resource_name, url: registration_path(resource_name), remote: true do |f| %> 所以失败是有效的。它在表单上方显示错误消息,而不重新加载页面。 成功注册的format.html{redir

我有一个注册表单,如果注册成功,应该将用户重定向到他们的个人资料。如果注册失败,我想在不使用Javascript重新加载页面的情况下显示一条错误消息

这是我的表格标题:

<%= form_for resource, as: resource_name, url: registration_path(resource_name), remote: true do |f| %>
所以失败是有效的。它在表单上方显示错误消息,而不重新加载页面。 成功注册的
format.html{redirect\u to current\u employer}
无效

我的服务器日志显示已处理重定向:

Redirected to http://localhost:3000/employers/27
但看起来我的雇主控制器上的显示动作被称为Javascript:

Processing by EmployersController#show as JS
因此,当我提交表单时,它不会将我重定向到我的个人资料页面。页面不会闪烁。但我已登录,因此如果我刷新页面,则表明我已登录

顺便说一句,我正在使用Deave,我的注册控制器是Deave使用内容的修正

不知道为什么这不起作用。我去掉了
format.js{}
部分,它仍然通过js向我的雇主发送GET调用#Show action。我想要的是将重定向格式化为HTML,并将我带到配置文件页面

有什么想法吗

解决方案 谢谢你的帮助。脸上的手掌,我完全忘记了遥控器的工作原理。这是我实现的解决方案。。。希望有人觉得这很有用

def create
  respond_to do |format|
    if resource.saved
      sign_up(resource_name, resource)
      #CHANGED
      format.js { render js: "window.location.href = '/#{resource_name}s/#{resource.id}'" }
    else
      format.js { render "#{resource_name}s/sign_up_failure" }
    end
  end
end

这也提高了代码的可重用性。

因为在通过ajax提交的表单上有
remote:true
,所以您没有说明如果通过ajax提交成功该怎么办。请求的格式是js而不是html,这就是重定向不起作用的原因


如果成功,您需要创建一个create.js.erb文件,通过javascript使用
window.location=“where You want to go”

处理重定向。您的表单上有
remote:true
。表单将始终通过Ajax而不是浏览器的正常提交机制提交,因此format.html将永远无法工作。您必须通过javascript处理重定向
def create
  respond_to do |format|
    if resource.saved
      sign_up(resource_name, resource)
      #CHANGED
      format.js { render js: "window.location.href = '/#{resource_name}s/#{resource.id}'" }
    else
      format.js { render "#{resource_name}s/sign_up_failure" }
    end
  end
end