【问题标题】:uninitialized constant YourSpace::UsersController::User未初始化的常量 YourSpace::UsersController::User
【发布时间】:2015-01-18 00:04:48
【问题描述】:

错误

  uninitialized constant YourSpace::UsersController::User

控制器

 class YourSpace::UsersController < ApplicationController

def new
 @title = YourSpace
end

def edit
 @title = YourSpace
 @user = User.find(params[:id])
end

 def update
  name = params[:user][:name]

  if name.blank?
   flash[:notice] = "Name can not be blank dawg!"
   redirect_to :back
  else
   User.find(params[:id]).update_attributes(params[:user])
   # redirect_to :action 'show'
   redirect_to :action => :show
   # render :action => 'show'
 end
 end

 def index
  @title = YourSpace
  @users = User.limit(100).order('created_at DESC')
 end

 def show
  @title = YourSpace
  @user = User.find(params[:id])
 end
end

路线

Rails.application.routes.draw do


root 'site#home'
get '/about', to: 'site#about', as: :about

namespace :your_space do
 resources :users
end

namespace :word_cloud do
 resources :words, :only => [:index, :create]
end

namespace :word_clock do
 resources :page, :only => [:index]
end

namespace :wish do
 resources :page, :only => [:index]
end

end

在启动 rails 服务器时,我在 YourSpace UsersController 中收到错误,其中这行代码 @users = User.limit(100).order('created_at DESC') 显然全部被顶起。请知道我试图在 365 天内复制 180 个网站,这些网站主要使用 ruby​​ 和 rails 构建。我正在密切关注回购以建立肌肉记忆。学习如何思考和编程非常新。

【问题讨论】:

  • 您可能想要重构此代码,尤其是在涉及update 操作时。几个问题: - 如果模型存在,您首先要查找模型,这将引发错误 ActiveRecord::RecordNotFound - 这将呈现 404 页面 - 您想再次呈现 :edit 表单,这样模型将具有用户的所有值已进入。
  • 没有与 your_space 关联的模型。我的理解是 mvc 框架中的模型仅在处理关系数据库时才需要,对吧?因此,我只需要生成一个带有适当视图的控制器,以呈现给浏览器。再次,学习如何思考和设置 Rails 应用程序仍然是全新的。当我发现自己正在学习 hartl 教程时,我决定分道扬镳并重新创建一个由社区中的某个人在 180 天内开发了 180 个站点的项目。再次,建立肌肉记忆。
  • 通过手指学习很好。但是,您想学习好东西。这段代码看起来不错railstutorial.org/book/updating_and_deleting_users
  • rails 中的模型用于与数据库交互。它不必是关系数据库(通常是 MySQL 或 PostgreSQL),它可以是文档数据库(如 MongoDB)或您真正想要的任何东西。控制器基本上是应用程序的入口点。它可以呈现一个html模板。它还可以呈现 json 响应,可以重定向(我会说那些是大 3)视图 - 表示层,它可以是 html 标记。当你构建一个 api 时,它可以是一个 json 视图。
  • 有太多值得学习的东西了。该应用程序仍然损坏,所以也许我需要回到 hartl 教程

标签: ruby-on-rails


【解决方案1】:

最初的想法是错误的..解决问题将User更改为::User


我的第一个想法是你需要把这个YourSpace::UsersController 放在app/controllers/your_space/users_controller.rb 中。 Rails 强制目录结构。

【讨论】:

  • 控制器的停车场结构目前在带有 users_controller.rb 文件的 your_space 目录的控制器中设置为这样,我认为您的意思是设置错误?
  • 我现在有点傻。没有充分阅读您的问题。由于某些原因,我不太确定他是否自动将 User 模式命名为当前命名空间。如果你写::User,它会知道回到根命名空间。
  • 我还是不明白
  • User 是您的模型。通过写User,你指的是那个类。但是,如果您查看您的错误,他正在尝试访问命名空间为 YourSpace::UsersControllerUser,而这并不存在。
  • 该死的,这将需要永远学习,只是还没有点击。感谢您与我们联系
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
相关资源
最近更新 更多