1

我只是想寻求一些澄清以访问其类中的 Instance 变量(如果这真的很基本,请道歉)。

我的例子是我有一个配方控制器,其中我有很多动作,但特别是我有一个 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 回答