3

これらの手順に従って、新しい Rails アプリケーションをセットアップしました。新しいコントローラーを生成resources :ticketsし、ルート ファイルに追加しました。

Hexapoda::Application.routes.draw do
  resources :tickets
end

これがコントローラーです (`/app/controllers/tickets_controller.rb')。

class TicketsController < ApplicationController
  def index
    @tickets = Ticket.all
  end
end

次に、新しいモデルを に追加しましTicket/app/models/ticket.rb

class Ticket
  include MongoMapper::Document

  key :summary, String, :required => true
end

ビュー ( /app/views/index.html.erb) は次のとおりです。

<h1>Tickets#index</h1>
<p>Find me in app/views/tickets/index.html.erb</p>

/ticketsブラウザでにアクセスすると、エラー メッセージが表示されます。

TicketsController#index の NoMethodError

未定義のメソッド「キー?」nil:NilClass の場合

何が起こっているのかわかりません。何が問題なのですか?Rails 3.2.5 と MongoMapper 0.11.1 を使用しています。

4

3 に答える 3

6

Master から最新の MonoMapper が必要です。

gem 'mongo_mapper', github: "jnunemaker/mongomapper"

そして走るbundle

説明: Rails 3.2.4 は、accessible_attributes メソッドを ActiveModel に追加しましたが、MongoMapper には既にこれがありました。だから彼らはお互いを壊していました。

MM の問題:修正する419
MM コミットの問題: 4d35c67

于 2012-06-12T16:54:35.303 に答える
2

上記の Jesse Wolgamott ソリューションは機能するはずです。機能しない場合は、非常に単純な何か他の問題がある可能性があります。

私にとって、このエラー:

未定義のメソッド「キー?」nil:NilClass の場合

コントローラが呼び出してビューに表示していたモデル ファイルに単純なタイプミスがあったために発生しました。attr_accessibleを使用するときは、物事の間のコンマを忘れないようにしてください。私の問題は、次のような改行文字を使用することから発生しました。

attr_accessible :address_1, :address_2, :city <= COMMA NEEDED :country, :latitude, :longitude, :state, :zip

上記の Jesse Wolgamott が言ったことを必ず実行してください。それが機能しない場合、または既にそのバージョンを既に実行している場合は、モデル ファイルにタイプミスがないか確認してください。

于 2012-06-13T19:21:11.133 に答える
0

これはかなり頭を悩ませていました。mongo_mapper gem をインストールしていませんが、Rails サーバーを再起動すると問題が解決しました。

于 2012-10-16T00:12:57.947 に答える