【问题标题】:Route appears in rake routes, but not on site路线出现在 rake 路线中,但不在现场
【发布时间】:2013-08-07 21:24:46
【问题描述】:

我是 ruby​​ on rails 的新手,无法跟上进度。我已经为用户身份验证设置了设计,一切似乎都很顺利。直到我尝试设置路线

基本上,我已经删除了我的 /public/index.html,并设置了一个新的默认路由。这是我的 /config/routes.rb

MyApp::Application.routes.draw do
  authenticated :user do
    root :to => 'home#index'
  end
  root :to => "home#index"
  devise_for :users
end

好的,这看起来很简单。我生成了一个家庭控制器/视图。我的 index.html.erb 只是默认值。我的控制器也是空白的。

当我运行 rake 路由时,我可以看到到根的路由。

root       /      home#index
root       /      home#index

所以这看起来很成功!但是……不是。尝试打开索引时出现错误

No route matches [GET] "/"

我不觉得我的服务器的细节应该很重要,但它是 nginx。如果有人认为这很重要,我可以发布我的服务器配置。

【问题讨论】:

  • 您不能为authenticated 和非认证范围设置相同的root :to => "home#index" 路由。你到底想做什么?如果您只想向登录用户显示页面的特定部分,请尝试user_signed_in?
  • 它只是一个占位符。将来,我可能(将)希望将经过身份验证的用户引导到不同的主页。你的理论也没有帮助。删除整个条件语句并仅设置一个路由会给出相同的错误。

标签: ruby-on-rails routes


【解决方案1】:

布拉格。我是个白痴。我认为无关紧要的服务器配置是问题所在。我已经编辑了我的 nginx 设置,但我在 Unicorn 中保留了默认设置。我以前从未注意到,因为不必要的应用程序和我的应用程序中的 /public/index.html 是相同的。不过感谢大家的帮助。

【讨论】:

    【解决方案2】:

    你应该添加资源:homes

    MyApp::Application.routes.draw do
          resources :homes
          root :to => "home#index"
          devise_for :users
        end
    

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2022-12-05
      • 2017-11-30
      • 2018-01-21
      相关资源
      最近更新 更多