Ruby on rails sinatra中的URL重定向不起作用?

Ruby on rails sinatra中的URL重定向不起作用?,ruby-on-rails,ruby,sinatra,Ruby On Rails,Ruby,Sinatra,请查找我用于重新定向的代码,以防验证正确/正确 post '/user/validate' do login = params[:login] pwd = params[:pwd] if User.authenticate(login, pwd).nil? @error = "Username and the password do not match" puts "There is an error in authentication" halt erb :

请查找我用于重新定向的代码,以防验证正确/正确

post '/user/validate' do
  login = params[:login]
  pwd = params[:pwd]
  if User.authenticate(login, pwd).nil?
    @error = "Username and the password do not match"
    puts "There is an error in authentication"
    halt erb :login
  else
    redirect to('https://www.google.com')
  end  
end
这不管用。尽管web控制台显示GET请求被触发到我的定向URL google。浏览器中的地址栏不会加载新页面,它会继续显示上一个请求的模板/视图

您好,请看下面的ajax调用的Javascript代码,使用这个重定向不起作用,但是使用普通的旧表单提交页面重定向起作用

$(document).ready(function()
{
 $("#send").click(function(event)
 {
    var data = { "login": $("#login").val(), "pwd": $("#pwd").val() };
    $.post( '/user/validate', data, 'json');
 });
});
普通格式标签


首先回答您的原始问题:

sinatra中的URL重定向不起作用? URL重定向与sinatra配合良好

问题 您的问题是使用jquery发布json数据。javascript解决方案和表单解决方案的区别在于表单创建表单数据

范例 要查看旋度示例中的差异,请执行以下操作:

表单数据

旋度-X柱127.1:4567/-d foo=bar

正常邮政数据

curl-X POST-H内容类型:application/json-d'{payload:xyz}'127.1:4567/

正如你所看到的,这些是不一样的。现在的问题是,默认情况下,sinatra只解析表单数据

快速修复:request.body 如果您在on位置需要这些参数,您可以从以下位置手动解析参数:

request.body.read

解决方案:rake contrib 或者最好使用rake contrib

使用gem安装rake contrib安装它 需要它

需要“机架”

需要“机架/控制器”

使用Rack::PostBodyContentTypeParser加载它


使用这些rake,您可以在params中解析post数据

你试过重定向吗https://www.google.com/“是的,两个都不行。我已经深入研究了这种情况,并意识到GET->GET redirect使用重定向助手方法进行工作,但是POST->GET和GET->POST似乎不起作用。有什么想法可以实现这一点吗?嗨,很抱歉稍后给出这个细节,但我正在使用ajax jquery在我编写的表单提交中进行后期查询。当我删除这个jquery并简单地使用完成表单提交时,它就可以工作了。所以基本上问题是如何用ajax运行它,表单提交你能展示你的js代码吗?“我知道它可能是什么。”先生,我希望编辑能有所帮助
<form method="post" action="/user/validate">
<input type="submit" value="Signup" name="submit">
</form>