所以,我在Hartls教程的7.2章注册表中,但我遇到了一些问题。我没有像教程那样得到ForbiddenAttributes(图7.15)。
我可以访问我的/注册,但每当我提交一个具有错误属性(邮件/密码)的用户时,它会抛出500,“我们很抱歉,但出了点问题。”不是上面提到的ForbiddenAttributes。
服务器日志中的代码段:
Started POST "/users" for ::1 at 2015-08-01 22:19:59 +0200
ActionController::RoutingError (uninitialized constant UsersController):
activesupport (4.2.0) lib/active_support/inflector/methods.rb:261:in `const_get'
activesupport (4.2.0) lib/active_support/inflector/methods.rb:261:in `block in constantize'
activesupport (4.2.0) lib/active_support/inflector/methods.rb:259:in `each'
activesupport (4.2.0) lib/active_support/inflector/methods.rb:259:in `inject'
activesupport (4.2.0) lib/active_support/inflector/methods.rb:259:in `constantize'
我已将其缩小到资源:我的routes.rb中的用户。但无法确定它。我缩小它的原因是每当我将'用户'与'用户'交换时,/ signup停止工作,我得到了这个
if options.empty?
recipient.send(method, *args)
else
recipient.send(method, *args, options)
end
当/ signup停止工作时,我的用户/ 1(显示)开始工作,这与路由中的“用户”没有关系。
代码:
的routes.rb
Rails.application.routes.draw do
resources :user
root 'static_pages#home'
get 'help' => 'static_pages#help'
get 'about' => 'static_pages#about'
get 'contact' => 'static_pages#contact'
get 'signup' => 'user#new'
get 'users/:id' => 'user#show'
end
user_controller.rb
class UserController < ApplicationController
def index
end
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(params[:users])
if @user.save
#Successfull
else
render 'new'
end
end
end
User.rb
class User < ActiveRecord::Base
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensetive: false }
has_secure_password
validates :password, length: { minimum: 6 }
end
答案 0 :(得分:1)
问题与UserController
有关,因为您的代码需要UsersController
才能采取行动。
根据惯例,控制器名称始终为复数。 http://guides.rubyonrails.org/action_controller_overview.html#controller-naming-convention
尝试将UserController
更改为UsersController
其次将resources :user
更改为resources :users
同样在app / view文件夹中有一个名为user
的文件夹。您需要将该文件夹重命名为users
而是为用户生成控制器。并删除用户但可能丢失数据的那个。你需要确保从用户到用户文件的复制内容。
事情会奏效。