路由错误&未找到行动

时间:2015-08-11 21:22:06

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

我正在阅读关于Ruby on Rails的教程,并准备好自己拍摄。

第一个问题: applications / html / erb它一直告诉我" Rails动作'索引','关于'和'帮助'无法找到。但是,当我在localhost3000 / site / index上时,我可以浏览页面。知道为什么它告诉我的行动无法找到?

<!DOCTYPE html>
<html>
    <head>
        <title><%= @title %></title>
        <%= stylesheet_link_tag 'application.css' %>
    </head>
    <body>
        <div id="whole_page">
          <div id="header">Work<b>Link</b></div>
            <div id= "nav">
              <%= link_to_unless_current 'Home', action: 'index' %> |
              <%= link_to_unless_current 'About Us', action: 'about' %> |
              <%= link_to_unless_current 'Help', action: 'help' %>
            </div>
         <div id="content">
           <%= @content_for_layout %>
           <%= yield %>
         </div>
        </div>
    </body>
</html>

第二个问题: 但是,当我尝试加载一个不同的控制器页面localhost3000 / users / register时,它会翻转并给我错误。它一直在告诉没有路线匹配[GET]&#34; / user / index&#34;

这是我的Routes.rb

Rails.application.routes.draw do
  get 'users/index'

  get 'users/register'

  get 'site/index'

  get 'site/about'

  get 'site/help'

  root 'site#index'

我整天都在摸索这一天,似乎无法找到解决方案。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您的routes定义不正确。

例如,对于user#index,您必须告诉Rails当控制器操作与URL中的特定路由匹配时要调用哪个控制器操作:

get '/users', to: 'users#index'

这意味着,当您点击localhost:3000/users这样的网址时,它会与此路线匹配,并会调用UsersController的{​​{1}}操作。

或者,您可以使用定义index的Rails约定并具有:

resourceful routes

在您的resources :users 文件中,然后Rails将为您的应用程序创建所有CRUD路径:

routes

我强烈建议您阅读Rails official documentation for Routes

答案 1 :(得分:0)

如果您只提供操作,则链接助手将尝试链接到当前呈现操作的控制器中具有该名称的操作。因此,当您从不同控制器进行渲染时,您还必须为键Execute system Groovy script提供值。