我正在关注迈克尔·哈特尔(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>
答案 0 :(得分:1)
您错误地声明了路线。可以通过多种方式声明路由,并且一开始很难看到差异。
您尚未指定当用户浏览路径“ users / about”时应该命中哪个控制器动作。对于您的语法,请使用:
get 'users/about', to: 'user#about'
希望这会有所帮助!
答案 1 :(得分:-2)
转到该页面的帮助方法可能不正确。
尝试运行rails routes
来查看它。