2

我需要对 Rails 应用程序中实例变量的范围有所了解(不确定其他框架是否具有类似的范例)

假设我有一个实例变量

@page_count = some_value

在控制器的索引操作中

所以,关于这个变量的可访问性。它应该可以在它的视图中访问,我猜也可以从模型中访问。(对吗?)

现在,如果我调用其他操作(通过其他请求)说,在同一个控制器中导出,变量 @page_count 不会有它在索引操作中设置的值

实例变量不会在不同请求之间保留其值,对吧?

目前为了解决这个问题,我正在使用会话范围变量,

session[page_count] = some_value # inside index action

现在该变量将在其他操作中可用,包括导出操作(通过其他请求)

这是好方法吗?使用会话?或者有更好的选择来存储不同请求之间的值?

建议/评论/指针,好吗?

4

2 回答 2

0

我认为这取决于您设置@page_count的内容。

如果它就像 db 表“pages”中的行数,并且您将其设置为,

@page_count = Page.all.count

然后你可以使用 abefore_filter并为你需要的每个控制器操作设置值。这是有关过滤器的更多信息。

否则,如果 @page_count 的值是计算出来的并且每次操作都会发生变化,那么我认为您只需要在每个操作中定义它即可。

于 2012-04-22T17:55:36.703 回答
0

I am not much of experience person but what if you create it as global variable once you set the value of global variable then you can access it in same controller with different methods. I know it is not good practice to use global variable but I hope It solve your problem.

于 2012-04-24T06:02:45.840 回答