0

ディレクトリ:

プロトタイプ

-アプリ

-資産

-コントローラー

---welcome_controller.rb

ドメインオブジェクト

---SimilarJob.rb

ユーティリティ

--API.rb

コントローラーコード

require_relative '../domainobjects/SimilarJob'

class WelcomeController < ApplicationController
 def index
  foo = API.new('DEVKEY')
  res = foo.RetrieveFacts("Test", "Me")

  #newResult = SimilarJob.new("test") <-- Failing Line!!!

  render :text => res["Response"]["IsInternationalResponse"]
 end
end

オブジェクトコード

class SimilarJob
end

私はいくつかのものを取り除きましたが、API クラスは別のディレクトリ "Utilities" に存在し、何らかの理由で "requires_relative" キーワードを使用して参照する必要さえありません。これは、HTTParty を含むラッパー クラスであり、外部 API への GET 要求を毎回成功させます。どこにも参照する必要がないように見える理由を誰かが説明できますか?

または、SimilarJob クラスを初期化しようとすると毎回失敗します。エラーは次のとおりです。

uninitialized constant WelcomeController::SimilarJob

私がこことウェブで調査したことから、これはファイルを正しく参照していないことを意味します。これをテストするために、「requires_relative」ステートメントで間違った名前を付けようとしましたが、フレームワークは、要求されたファイルをロードできなかったと通知しました。Railsが私のクラスを見つけているようですが、何らかの理由で初期化されません。

最も腹立たしいのは、SimilarJob にいくつかの小さな変更を加え、サーバーを再起動すると、突然動作するようになることです。サーバーを停止して再起動すると、下に貼り付けたエラーに戻ります。

.NET MVC や KnockoutJS 以外のものを実際に掘り下げるのはこれが初めてです。私のやり方の誤りを指摘していただけませんか?

編集: このコントローラーに generate コマンドを使用したため、すべてのビューとルートが適切に機能します。実際、問題のある行をコメント アウトすると、JSON 応答の最後の行で参照しているプロパティが問題なくファイルにレンダリングされます。

EDIT v2: 奇妙なことに、クラス名を Jobs (一言) に変更すると、このエラーが解消されます。これは奇妙に見えます!これが私の問題であることを誰かが確認できますか?

4

1 に答える 1

2

名前は重要であり、ファイルの名前を間違っています。SimilarJob.rbである必要がありますsimilar_job.rb

同様に、あなたのAPIファイルは と呼ばれるべきapi.rbであり、それが定義するクラスは と呼ばれるべきApiです。あなたはRailsの慣習からひどく逸脱しており、それに苦しんでいるので、これは重要です。

于 2013-08-22T21:01:32.680 に答える