我使用actions注册和索引创建了一个新的控制器“user”。但是,当我浏览器http://localhost:3000/user/register时,我收到错误消息。它告诉我No route matches {:action=>"about", :controller=>"user"}
我没有正确创建控制器吗?
这是我的一些代码。
的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'
用户控制器
class UserController < ApplicationController
def index
end
def register
@title = 'Register'
end
end
更新 它一直告诉我***之间的界线存在问题
<!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', action: 'about' %> |***
<%= link_to_unless_current'Help', action: 'help' %>
</div>
<div id="content">
<%= yield %>
<%= @content %>
</div>
</div>
</body>
</html>
答案 0 :(得分:1)
我会将您的路线/控制器切换为以下内容。另外,请保持控制器名称的复数。
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
end
def register
end
end
# config/routes.rb
resources :users, only: %w(index) do
get :register, on: :collection
end
我指定了on: :collection
,因为该路线不属于属于该集合的成员。即:它不需要对象的ID,如users/1/
那样。另一个选项是member
,它当然是属于集合的成员的路线。
现在,访问localhost:3000 / users / register。
答案 1 :(得分:0)
你的routes.rb文件也应该有多个命名。这个答案支持贾斯汀的回答。
所以这一行例如:
user/register
应该是
users/register
如果我的建议有效,你最终可能会得到你必须解决的错误。那你很高兴。
根据您的更新 你有一个约定的方法???