Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法';列';mongoid与bootstrap_Ruby On Rails_Twitter Bootstrap_Mongoid - Fatal编程技术网

Ruby on rails 未定义的方法';列';mongoid与bootstrap

Ruby on rails 未定义的方法';列';mongoid与bootstrap,ruby-on-rails,twitter-bootstrap,mongoid,Ruby On Rails,Twitter Bootstrap,Mongoid,我在mongoid上做了一个断头台手术: railsg引导:安装 但当我提出: rails g bootstrap:themed Contratos 我有一个错误: /usr/local/rvm/gems/ruby-1.9.3-p327/gems/twitter-bootstrap-rails-2.1.6/lib/generators/bootstrap/themed/themed_generator.rb:59:in block in columns': undefined method '

我在mongoid上做了一个断头台手术: railsg引导:安装

但当我提出:

rails g bootstrap:themed Contratos
我有一个错误:

/usr/local/rvm/gems/ruby-1.9.3-p327/gems/twitter-bootstrap-rails-2.1.6/lib/generators/bootstrap/themed/themed_generator.rb:59:in block in columns': undefined method 'columns' for Contrato:Class (NoMethodError)

查看主题生成器的源代码:

  def columns
    excluded_column_names = %w[id created_at updated_at]
    if defined?(ActiveRecord)
      rescue_block ActiveRecord::StatementInvalid do
        @model_name.constantize.columns.reject{|c| excluded_column_names.include?(c.name) }.collect{|c| ::Rails::Generators::GeneratedAttribute.new(c.name, c.type)}
      end
    else
      rescue_block do
        @model_name.constantize.fields.collect{|c| c[1]}.reject{|c| excluded_column_names.include?(c.name) }.collect{|c| ::Rails::Generators::GeneratedAttribute.new(c.name, c.type.to_s)}
      end
    end
  end
您面临的问题是,您的应用程序定义了ActiveRecord,但ar使用的是Mongoid

您应该在
application.rb
文件中为以下行替换行
require'rails/all'

require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"

有关Mongoid安装的更多信息,请参见:。

您所要做的就是向Mongoid模型添加一个“columns”类方法,以便生成器仍能正确响应:

def self.columns
  self.fields.collect{|c| c[1]}
end

这种方法基于Nicolas Garnil的回答,对我很有效。

好的,你说得对,但是即使删除require'rails/all'这个错误仍然会发生!我用-O构建了我的rails应用程序!