14

私は Rails アプリケーション専用の ruby​​gem を開発しており、Gem からコントローラーを追加して、Rails アプリで使用できるようにしたいと考えています (デバイスが RegistrationsController、SessionsController で行うのと同様)

gem 側:

次の app/controllers/samples_controller.rb を追加してみました

class SamplesController < ApplicationController
  def index
    .
    .
  end
end

そして、私のレールルートに次のいずれかを追加します。

match 'route' => 'samples#index'

また

resources :samples

明らかに私はそこで何か間違っているのですが、それが何であるかわかりませんか? SampleController またはアプリの初期化子を明示的に要求する必要がありますか?

現在、ルートにアクセスするときにこのエラーが発生しています

uninitialized constant SamplesController

ありがとう :)

4

3 に答える 3

0

まず、コードにタイプミスがあります: AppicationControllershould be ApplicationController.

次に、Rails の命名規則 (リソースの複数形など) に従っていません。

  • ルートでは、またはのいずれかであるresources :samples必要がありますresource :sample
  • あなたのコントローラークラスclass SamplesController
  • コントローラのファイル名はsamples_controller.rb.

慣例に従えば、問題ないはずです。

于 2012-06-02T11:37:31.963 に答える
0

ルートを設定するには、プロジェクトの config ディレクトリに routes.rb ファイルを作成します。サンプルルートで一致させるには、次のようにします: config/routes.rb

Rails.application.routes.draw do
  <resource definition here>
end

app/controllers/samples_controller.rb

module Samples
  class SamplesController < ApplicationController
    def index
      .
      .
    end
  end
end

アプリケーションコントローラーにモジュールを含めることを忘れないでください

include 'samples'

このサイトを見たことがありますか:

http://coding.smashingmagazine.com/2011/06/23/a-guide-to-starting-your-own-rails-engine-gem/

于 2012-06-02T23:00:46.000 に答える