1

クラス内でインスタンス変数にアクセスする方法を明確にしたいと考えています (これが本当に基本的なものである場合は申し訳ありません)。

私の例では、レシピコントローラーがあり、その中に多くのアクションがありますが、特に INDEX と SHOW アクションがあります

def index
@q = Recipe.search(params[:q])
@q.build_condition
end

@q は、検索フォームから渡されたパラメータに基づいてレシピ モデルを検索します

開始する別のページに結果を表示したいので (後で AJAX オプションを確認します)、SHOW アクションでこれを行うことができます

 def show
 @searchresults = @q.result(:distinct => true)
 end

これは有効だと思いますが、そうでない場合はどこかで間違っています。誰かが建設的なアドバイスをしたり提供したりできますか?

ありがとうございました

4

2 に答える 2

3

オブジェクトまたはクラスには、次のメソッドが必要です。

  • @foo.instance_variables- これにより、インスタンス変数の名前がリストされます@foo
  • @foo.instance_variable_get- これはインスタンス変数の値を取得します@foo
    • 例: - これは、名前が付けられ@foo.instance_variable_get("@bar")たインスタンス変数の値を取得します@bar@foo
于 2012-12-07T13:45:19.243 に答える
1

どちらも異なるアクションを持ち、異なるリクエストに対して呼び出されるため、このようなインスタンス変数を使用することはできません。

ただし、以下は機能します

def index
  @q = Recipe.search(params[:q])
  @q.build_condition
  show
end

def show
  #Following line will work as we are calling this method in index 
  #and so we can use instance variable of index method in the show methos 
  @searchresults = @q.result(:distinct => true)
end
于 2012-12-07T13:45:41.483 に答える