1

過去10日間、mongodbでRORを学習しています。インストール中に mongoid_slug が機能しません。http://pastebin.com/Gtjzx3Xpで私が得たものを見てください

私は宝石モンゴイド(3.0.4、3.0.1)を持っています。私の Gemfile は次のようになります。

source 'https://rubygems.org'

gem 'rails', '3.2.6'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem "mongoid", "~> 3.0.0"

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  gem 'execjs'
  gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'mongoid_slug'
gem 'stringex'

それで、

$> bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Bundler could not find compatible versions for gem "mongoid":
  In Gemfile:
    mongoid_slug (>= 0) ruby depends on
      mongoid (~> 2.0.0.beta7) ruby

    mongoid (3.0.1)

私のコントローラーは:

class Post
  include Mongoid::Document
  include Mongoid::Slug
  field :name, type: String
  field :title, type: String
  field :content, type: String
  validates :title,  :presence => true, :length => { :minimum => 10 }
  has_many :comments
  slug :name
end

Webページで実行すると、次のようになります。

Routing Error

uninitialized constant Mongoid::Slug
Try running rake routes for more information on available routes.

mongoid_slug は現在のバージョンの mongoid では動作しませんか? どうすれば機能しますか?

4

2 に答える 2

2

mongoid_slugのRubyGems バージョンは古くなっているようです。それはMongoid 2.0(mongoid ~> 2.0)が必要であり、それがあなたのbundle installエラーの原因です。GitHubのバージョンは Mongoid 3.0 用のようです:

s.add_dependency 'mongoid',  '~> 3.0'

したがって、Gemfile でこれを使用してみることができます。

gem 'mongoid_slug', :git => 'git://github.com/hakanensari/mongoid-slug.git'

GitHub バージョンを使用します。

于 2012-08-18T21:02:27.640 に答える
0

ここで最も可能性の高い答えは、mongoid_slug のバージョンが低すぎるということです。Gemfile で最新バージョンを指定してみてください。

gem 'mongoid_slug', '0.10.0'

そして、それでbundle update mongoid_slug問題が解決するかどうかを確認します。

于 2012-08-18T20:41:20.480 に答える