0

Rails コントローラーでは、外部データベースへの JSON 要求を使用して、レコードのコレクションを並べ替えるために使用される整数を返します。

Model.order(JSON.parse(open("http://myapp.com/models/#{:id}")).read)['attribute'])

これを動的にして、環境間の切り替えを支援したいと考えています。何かのようなもの:

Model.order(JSON.parse(open(model_url(model))).read)['attribute'])

これは正しくなくmodel_url(model)、エラーを返しています:

undefined local variable or method 'model'

クエリで自分自身を参照するにはどうすればよいですか?

よりもエレガントなソリューションが必要です

...JSON.parse(open("#{root_url}/models/{:id}"))....

編集:

以下の Lightswitch05 の回答は、私が尋ねた質問に答えます。クエリはparams[:id]、現在のレコードの URL を取得するために参照する必要があります。

実際、この JSON 呼び出しをモデルの仮想属性に移動することにしました。これは、単純に を呼び出すことができることを意味しますModel.order(:my_virtual_attribute)。このソリューションには独自の問題がありますが (モデルで url_helpers を使用できるようにする必要がありました)、長い目で見れば、これはよりクリーンなソリューションになると思います。

4

3 に答える 3

1

私たちの議論によると、問題はmodel定義されていないことです。あなたがやろうとしてmodelいるのはそのURLを取得することだけなので、本当に必要なのはparams[:id]. これにより、エラー メッセージが修正されます。

Model.order(JSON.parse(open(model_url(params[:id]))).read)['attribute'])

model置き換えられた場所params[:id]

于 2013-05-07T17:58:25.333 に答える
0

nameメソッドが必要です。

モデルのインスタンスではなく、モデルを使用している場合は、次のようになります。Model.name

インスタンスを使用している場合は、

@model = Model.first
@model.class.name
于 2013-05-07T16:39:30.483 に答える