Ruby on rails 未定义的方法';列';mongoid与bootstrap
我在mongoid上做了一个断头台手术: railsg引导:安装 但当我提出: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 '
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应用程序!