Ruby on rails Rails将_重定向到创建错误的URL
无法找到任何与此问题相关的内容(其他搜索涉及表单等)。这可能是我的疏忽。但我到底错过了什么 目标:如果存在会话,我只是尝试从Ruby on rails Rails将_重定向到创建错误的URL,ruby-on-rails,ruby-on-rails-4,redirect,controller,Ruby On Rails,Ruby On Rails 4,Redirect,Controller,无法找到任何与此问题相关的内容(其他搜索涉及表单等)。这可能是我的疏忽。但我到底错过了什么 目标:如果存在会话,我只是尝试从/login页面URL重定向到/dashboardURL 预期结果:调用重定向到仪表板\u索引\u url或重定向到“/dashboard”应转到https://mydomain/dashboard 当前结果:如果我转到https://mydomain创建会话后,它会将我重定向到https://mydomaindashboard,请注意缺少的斜杠 尝试的解决方案: 创建会
/login
页面URL重定向到/dashboard
URL
预期结果:调用重定向到仪表板\u索引\u url
或重定向到“/dashboard”
应转到https://mydomain/dashboard
当前结果:如果我转到https://mydomain
创建会话后,它会将我重定向到https://mydomaindashboard
,请注意缺少的斜杠
尝试的解决方案:
- 创建会话后手动键入URL,RESULT:有效,因此似乎存在正确的路由
- 在
,结果:行为与路由中进行手动路由。rb
路由完全相同,但缺少斜杠资源
- 清除浏览器缓存,使用不同的浏览器结果:所有浏览器都显示相同的行为
class LoginController“dashboard#索引”
@Ryan以下是路线的当前输出:
$rake路由
前缀动词URI模式控制器#操作
登录\索引获取/登录(:格式)登录\索引
发布/登录(:格式)登录#创建
新建登录获取/登录/新建(:格式)登录新建
编辑\登录获取/登录/:id/编辑(:格式)登录\编辑
login GET/login/:id(:format)login#show
补丁/登录/:id(:格式)登录#更新
PUT/login/:id(:格式)登录#更新
删除/登录/:id(:格式)登录#销毁
仪表板获取/仪表板(:格式)仪表板#索引
仪表板#索引获取/仪表板(:格式)仪表板#索引
发布/仪表板(:格式)仪表板#创建
新建仪表板获取/仪表板/新建(:格式)仪表板#新建
编辑仪表板获取/仪表板/:id/编辑(:格式)仪表板#编辑
GET/dashboard/:id(:format)dashboard#show
补丁/仪表板/:id(:格式)仪表板#更新
PUT/dashboard/:id(:格式)dashboard#update
DELETE/dashboard/:id(:format)dashboard#destroy
root GET/login#index
要使用dashboard(仪表板)index(url),必须将其写入路由文件中。但是,当您在routes.rb a仪表板资源中创建时,您可以使用仪表板url,它将指向/dashboards/index
完成此任务的另一种方法是创建映射
get 'dashboard' => "dashboard#index" as: :dashboard_index
仪表板索引url和仪表板索引路径将为您提供
更新1
请看这个
问题是路径为您提供了相对路由和绝对url。这就是为什么在路径中没有额外的斜杠。尝试path而不是url,它应该可以工作
更新2
尝试仪表板索引路径已解决: 嗯,我发现了问题,实际上不是Rails,而是Apache乘客。在apache级别有一个带有重定向(以便所有HTTP都重定向到HTTPS)的配置,该配置没有浮动尾随斜杠并导致麻烦。(拍了拍额头)
我一定喜欢那些红鲱鱼。非常感谢大家的快速帮助 把你的路线改成
get'/login',to:redirect('/dashboard')
您甚至可以通过以下方式将生成的链接定制为更特定于您的用户的内容:
get'/login',to:redirect('/dashboard'),as:'/dashboard/user[:username]'
如果需要的话
另一方面,你应该试着边走边清理你的路线。有很多是你没有使用的。换成
resources:dashboard,仅限:[:index]
并根据需要添加到其中。例如only:[:index,:show]
等。如果有一天需要其他开发人员修改您的应用程序,我们会查看您的路线,可能会对我们可以做什么做出错误的假设
Justin您可以添加
rake routes
的输出吗。在您的routes.rb
中,您有根集吗?示例:root:to=>“home#index”
@musicman3569您是否尝试使用url上的路径?@TetianaChuprynaurl上的路径
是什么意思?我是rails新手。@musicman3569出于某种原因查看我的更新答案,即使我这样做或直接使用重定向到“/dashboard/index”
,而不是变量,它仍然会去掉前导空格,因此我得到https://mydomaindashboard/index
,非常好的建议,感谢您的快速回复。不幸的是,使用redirect\u to dashboard\u index\u路径
会转到https://mydomaindashboard
也不带斜杠。然而,手动添加斜杠并重新加载会给我提供正确的页面。我真的被难住了。问题出在Apache上,我在下面发布了解决方案。再次感谢!
get 'dashboard' => "dashboard#index" as: :dashboard_index