在浏览器中创建了新的控制器,错误

时间:2015-08-11 19:23:53

标签: ruby-on-rails

我使用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>

2 个答案:

答案 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

如果我的建议有效,你最终可能会得到你必须解决的错误。那你很高兴。

根据您的更新 你有一个约定的方法???