没有路由匹配非常基本的Rails4应用程序

时间:2013-07-08 15:27:48

标签: ruby-on-rails ruby-on-rails-4

我是RoR的新手,我正在尝试获得一个非常基本的网站。我的主页工作正常,但是当我尝试添加新页面时,我会在日志中看到“无路由匹配”。以下是佣金路线的输出:

         Prefix Verb URI Pattern                Controller#Action
inventing_index GET /inventing/index(.:format) inventing#index
    ideas_index GET /ideas/index(.:format)     ideas#index
           root GET /                          ideas#index

然而,当我去mysite.com/inventing或mysite.com/inventing/index时,我得到no route matches错误。 mysite.com/按预期显示app / views / ideas.erb。我所做的只是rails generate controller inventing index。我还需要做些什么来激活路线吗?

我正在运行ruby 2.0.0p247并使用乘客/ apache在centos 6上运行4.0.0。我安装了所有ruby / rails /乘客的东西,所以它可能没有正确安装。

由于

编辑:这是我的routes.db文件:

Rortest::Application.routes.draw do
  get "inventing/index"
  get "ideas/index"
root to: 'ideas#index'
end

1 个答案:

答案 0 :(得分:0)

tldr:您的问题可能就是路线。将get 'inventing/index'更改为get 'inventing/index'=> 'inventings#index'以正确指向路由到您的控制器操作。


添加新页面/路线时,您需要做四件事。我通常按​​此顺序执行静态页面:

1)为每个页面创建一个具有相应操作的控制器

您已使用rails generate controller inventing index执行此操作,但请确保:

  • app/controllers文件夹中,确实有一个名为inventings_controller.rb
  • 的文件
  • inventings_controller.rb中,您至少拥有以下内容:

class InventingsController < ApplicationController
def index
end
end

2)为每个控制器操作

创建一个视图

确保:

  • app/views/inventings文件夹中,您有一个名为index.html.erb
  • 的文件
  • 在该文件中添加一些简单的HTML,例如<h1>Testing123</h1>,这样您就可以看到它是否正常工作。

3)为每个控制器操作添加路由

看起来这可能是问题所在。在routes.rb文件中,您需要:

get 'inventing/index' => 'inventings#index'

您的root to有效,因为它实际上直接指向您的控制器操作,但是导轨不够智能,无法猜测inventing/index应该转到您{{1}中的index操作控制器。

4)正如其他人所建议的那样,重启rails应用程序

您可以在命令行中使用ctrl + c执行此操作,然后再次inventing**s**启动它。