2

私は mongoid を使用した足場アプリケーションを持っており、次のことを行いました: rails g bootstrap:install

しかし、私が置くとき:

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)
4

2 に答える 2

1

テーマ ジェネレーターのソース コードを見てみましょう。

  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 を使用していることです。

ファイル内の行を次の行require 'rails/all'に置き換える必要があります。application.rb

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

Mongoid インストールの詳細については、http://mongoid.org/en/mongoid/docs/installation.html を参照してください。

于 2012-11-13T15:17:46.653 に答える
0

Mongoid モデルに "columns" クラス メソッドを追加するだけで、ジェネレーターが引き続き正しく応答するようになります。

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

このアプローチは、Nicolas Garnil の回答に基づいており、私にとってはうまくいきました。

于 2013-01-31T22:04:59.873 に答える