【问题标题】:Why it's redirecting to localhost://3000 while passing an url?为什么它在传递 url 时重定向到 localhost://3000?
【发布时间】:2019-12-26 09:39:31
【问题描述】:

“我创建了一个使用 devise gem 提供登录和注册页面的网站。我正在尝试到达 localhost:3000/users/sign_in 这条路径。但它正在重定向到 localhost://3000

“这适用于 ruby​​ 2.5 和 rails 6.0。我尝试了一些可能的方法,例如清除 cookie、重新启动服务器。但我仍然面临同样的问题。”


<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "devise/shared/error_messages", resource: resource %>

   #fields for sign_up page

<% end %>

<%= render "devise/shared/links" %>

“我希望得到登录页面,但它重定向到根 url”

日志

Started GET "/users/sign_in" for 127.0.0.1 at 2019-08-21 13:22:56 +0530
   (0.3ms)  SET NAMES utf8mb4,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
   (0.3ms)  SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
Processing by Devise::SessionsController#new as HTML
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 16ms (ActiveRecord: 1.6ms | Allocations: 9317)


Started GET "/" for 127.0.0.1 at 2019-08-21 13:22:56 +0530
Processing by Rails::WelcomeController#index as HTML
  Rendering /home/parvathy/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/templates/rails/welcome/index.html.erb
  Rendered /home/parvathy/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/railties-6.0.0/lib/rails/templates/rails/welcome/index.html.erb (Duration: 7.0ms | Allocations: 315)
Completed 200 OK in 18ms (Views: 13.3ms | ActiveRecord: 0.0ms | Allocations: 1772)

【问题讨论】:

  • 我们可以看看你的控制器吗?如何在 /config/routes.rb 中配置到 users/sign_in 的路由?
  • devise_for: users 这个我在 routes.rb @PietroAllievi
  • 能否添加日志以查看重定向
  • 我们可以看到require_no_authentication方法重定向了用户。此设计 before_action 禁用新操作所需的身份验证。你定制了吗?
  • 其实我没有自定义任何东西。我刚刚创建了一个新应用程序并使用 devise 创建了模型、视图和控制器。它产生了一切。我正在尝试执行那些自动生成的路线。但这些路由正在重定向到根 url。每当我清除我的 cookie 和缓存时,它都会第一次工作。

标签: ruby-on-rails


【解决方案1】:

这归结为一个格式错误的 URL。

本地主机://3000

格式不正确。

本地主机:3000/blah

表示 localhost 在端口 3000,目录等等

冒号必须在端口号前面。

协议装饰器 :// 用于 http:// https:// ftp:// 等

http 是协议,http 默认为 80 端口,https 为 443 端口,但可以像我们这里一样指定,将其放在顶级域之后。

http://localhost:3000

应该可以解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 2018-01-08
    • 2014-10-22
    • 2017-09-02
    • 1970-01-01
    • 2022-01-12
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多