User#register中的ActionController :: UrlGenerationError没有路由与{:action =>“ about”,:controller =>“ user”}

时间:2019-10-03 22:22:25

标签: ruby-on-rails ruby controller action

我正在关注迈克尔·哈特尔(Michael Hartl)的书:"RailsSpace building a social network with ruby on rails"。我在第91页,

当我尝试进入注册页面时,我得到了:

ActionController::UrlGenerationError in User#register No route matches {:action=>"about", :controller=>"user"}

有人知道为什么吗?请帮忙。

我将register.html.erb文件保存在app/views/user文件夹中,但我不知道为什么会出现网址生成错误。

这是app/views/user/register.html.erb的代码:

<h2>Register</h2>
<% form_for :user do |form| %>
  <fieldset>
    <legend>Enter Your Details</legend>
    <label for="screen_name">Screen name:</label>
    <%= form.text_field :screen_name %>
    <br />
    <label for="email">Email:</label>
    <%= form.text_field :email %>
    <br />
    <label for="password">Password:</label>
    <%= form.password_field :password %>
    <br />
    <%= submit_tag "Register!", :class => "submit" %>
  </fieldset>
<% end %>
  

这是我的用户控制器的代码:

 class UserController < ApplicationController
  layout "site"

   def index
   end

   def register
   @title = "Register"
 end
end
  

这是我的routes.rb文件:

 Rails.application.routes.draw do
 get 'user/index'
 get 'user/register'
 get  'site/index'
 get '/site/about'
 get 'site/help'

 root  'site#index'


 end
  

我正在尝试通过键入以下内容进入注册页面:

localhost:3000/user/register

  

为什么说:

Showing C:/Users/Vanessa/rails_space/app/views/layouts/site.html.erb where line #16 raised

  

这是我的控制台中显示的内容:

 ActionView::Template::Error (No route matches {:action=>"about", 
 :controller=>"user"}):
    13:      <div id="nav">
    14:
    15:       <%= link_to_unless_current "Home", :action => "index" %> |
    16:       <%= link_to_unless_current "About Us" , :action => "about" %> |
    17:       <%= link_to_unless_current "Help", :action => "help" %>
    18:
    19:         </div>

感谢大家提前提供所有帮助。

  

这是我的app / views / layouts / site.html.erb文件:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html>
   <head>
    <title><%= @title %></title>
   <%= stylesheet_link_tag "site" %>
  </head>
 <body>

  <div id="whole_page">

 <div id="header">RailsSpace</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">
   <%= yield %>
      </div>
     </div>
   </body>
  </html>

2 个答案:

答案 0 :(得分:1)

您错误地声明了路线。可以通过多种方式声明路由,并且一开始很难看到差异。

您尚未指定当用户浏览路径“ users / about”时应该命中哪个控制器动作。对于您的语法,请使用:

get 'users/about', to: 'user#about'

希望这会有所帮助!

答案 1 :(得分:-2)

转到该页面的帮助方法可能不正确。

尝试运行rails routes来查看它。