访问实例变量

时间:2012-12-07 13:42:01

标签: ruby-on-rails ruby-on-rails-3 model-view-controller controller

我只是想寻求一些澄清来访问其类中的实例变量(如果这是非常基本的道歉)。

我的例子是我有一个配方控制器,在其中我有很多动作,但特别是我有一个INDEX和一个SHOW动作

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

@q根据通过我的搜索表单传递的参数搜索我的食谱模型

我想在不同的页面上显示结果(稍后会查看AJAX选项),所以在我的SHOW操作中我可以这样做

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

我认为这是有效的,但如果不是我在某个地方出错了。任何人都可以建议或提供一些建设性的建议吗?

谢谢

2 个答案:

答案 0 :(得分:3)

您的对象或类应具有以下方法:

  • @foo.instance_variables - 这将列出@foo
  • 的实例变量的名称
  • @foo.instance_variable_get - 这将获取@foo的实例变量的值
    • ex:@foo.instance_variable_get("@bar") - 这将为@bar
    • 获取名为@foo的实例变量的值

答案 1 :(得分: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