根路线不起作用

时间:2014-10-19 15:41:39

标签: ruby-on-rails routes

在routes.rb文件中:root "pages#index"

pages_controller.rb文件

  class PagesController < ApplicationController
    def index
      render 'home'
    end

    def about
    end
  end

查看名为home.html.haml

rake routes返回

Prefix Verb URI Pattern        Controller#Action
   home GET  /home(.:format)    pages#home
  about GET  /about(.:format)   pages#about

localhost只是说“我们很抱歉,但出了点问题。”,控制台说ActionController::RoutingError (No route matches [GET] "/home"):

On Rails 4.2.0.beta2

*编辑Rails版本和控制台错误

2 个答案:

答案 0 :(得分:1)

确实,rake routes表示GET /home将匹配pages#home,页面控制器中的主页操作。

您能否向我们展示更多您的routes.rb文件?

此外,为什么不将home.html.haml文件重命名为index.html.haml文件,因此您的索引操作可以成为

def index
end

如果您没有指定要渲染的视图,Rails将尝试查找包含您的操作名称的视图。

答案 1 :(得分:0)

我会将你的routes.rb文件更新为:

root 'pages#index'

get '/home',  to: 'pages#index'
get '/about', to: 'pages#about'

正如本杰明所建议的那样,我认为将home.html.erb重命名为index.html.erb是一个更好的设计。这样您就可以从索引方法中删除render 'home'

奇怪的是,您的rake routes输出表明/ home将被重定向到#home页面,这是您不具备的控制器方法。