15

Rails でモデルを作成したい:

rails generate model ABCThing

したがって、これによりテーブルが作成されますabc_things。偉大な。問題はコントローラーとルーティングにあります。コントローラーを次のようにしたい:

class ABCThingsController < ApplicationController
end

ただし、追加した後、routes.rb

resources :abc_things, :only => [:index]

対応するビューを作成するとindex、ブラウザに次のエラーが表示されます。

Expected /app/controllers/abc_things_controller.rb to define AbcThingsController

問題は簡単に確認できますが ( "ABCThings".tableize.classify => "AbcThing")、修正方法がよくわかりません。ビューからコントローラーへのレールのデフォルトルーティングをオーバーライドしたいのですが、方法がわかりません。

助けていただければ幸いです(そして、より良い質問のタイトルを提案してください!)

4

4 に答える 4

24

この問題があり、上記の解決策をすべて試した後、インフレータを使用して問題を解決できました。

私の場合、問題は次のようTLA::ThingsControllerに解決されていましたTla::ThingsController

以下を初期化フォルダーに入れると修正されました

config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'TLA'
end
于 2016-02-25T13:40:14.277 に答える
3

routes.rb でカスタム コントローラー名を設定する必要があります。

resources :abc_things, :only => [:index], :controller => "ABCThings"
于 2012-09-20T11:39:06.990 に答える
2

これは、ある時点で Ruby で変更された可能性がありますが、連続する複数の大文字 (頭字語または頭字語) を使用してクラスに名前を付ける場合、ファイル名にアンダースコアを含める必要がなくなりました。

# abc_thing.rb

含むことができます

class ABCThing

  def hello
    puts "Hello World"
  end

end

また

class AbcThing

  def hello
    puts "Hello World"
  end

end
于 2014-12-09T18:28:22.970 に答える
0

コマンドを実行すると

rails generate model ABCThings

コントローラーではなくモデルを生成します。モデルとコントローラーの両方が必要な場合は、次を使用します

rails generate scaffold ABCThings

Railsコマンドを使用してコントローラーを生成していないため、次のコマンドを使用してコントローラーを生成する際に問題が発生したと思います

rails generate controller ABCThings

そして、あなたは次のようにすることができ/app/controllers/abc_things_controller.rbます

class AbcThingsController < ApplicationController
end
于 2012-09-20T09:00:58.357 に答える