繁体   English   中英

名称错误“未初始化的常量”ruby on rails

[英]Name Error "uninitialized constant" ruby on rails

我想使用具有特殊条件的update_attributes更新数据库中的数据(条件工作正常)

代码 :

class LanguagesController < ApplicationController
  def language_config
   current_user=Authorization.current_user
    logger.info "9"
    if params[:examination_id] ==1
        logger.info "3"

     LanguageSetting.find(:all, :conditions => "section = 'examination'")
    logger.info "1"
     LanguageSetting.update_attributes(:language =>"english")
          
    else 
          logger.info "2"

     LanguageSetting.find(:all, :conditions => "section = 'examination'")
     LanguageSetting.update_attributes(:language =>"arabic")
    end
    
    
  end
end

在日志文件中我们发现:

Parameters: {"controller"=>"languages", "action"=>"language_config"}
Username : admin Role : Admin
9
2

NameError (uninitialized constant LanguagesController::LanguageSetting):

这意味着条件工作正常,但为什么 Name 错误? 数据库中的表名为: language_settings

为什么我收到这个错误? 顺便说一句,我没有创建我认为不需要的模型,还是我错了?

请在信息方面需要帮助

要与数据库表交互,您需要一个模型。

对于最低限度,只需使用以下内容创建一个app/models/language_setting.rb (如果您使用的东西少于 Rails 5,请从ActiveRecord::Base继承)

class LanguageSetting < ApplicationRecord
end

Rails 模型通过查看模式来为各种属性自动生成 getter/setter 方法。 这就是为什么在模型就位后,您可以说:

setting = LanguageSetting.new 
setting.language = "english"
setting.save

以及您在问题中显示的代码。

您需要创建一个模型来与数据库中的表进行通信。 我建议阅读官方 Rails指南

在代码中,您在模型上应用条件但不存储其结果。 :update_attributes是 ActiveRecord::Model 类的实例方法。

所以你正在做的事情可以像下面那样实现。 首先定义模型。

     settings = LanguageSetting.where("section = 'examination'")
     settings.update_attributes(:language =>"arabic")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM