class Order < ApplicationController
def new
@project = Project.new
end
def show
@project = Project.find(params[:id])
end
end
那么为什么Ruby / Rails不会在同一个类中的两个不同方法中与相同的实例变量混淆呢?
答案 0 :(得分:2)
作为Rails控制器,在浏览器请求/new
或/show
时调用它。对于每个请求,都会创建一个新的控制器类实例。因此,new
或show
将被执行,但不会同时执行。
答案 1 :(得分:1)
因为创建了一个新的类实例来处理每个请求。
[编辑]:如果您要使用另一种名为Order#do_stuff_with_project
的方法,则可以从Order#show
和Order#new
调用它,并且可以访问@project
变量。它们是简单的方法,没什么神奇的。
或者你可以这样说:按照惯例,两个方法永远不会在同一个控制器实例上调用。这是temporal coupling的一个例子。
答案 2 :(得分:0)
无论何时刷新页面,都会向控制器发送请求,然后再次对其进行初始化。
答案 3 :(得分:0)
实例方法仅在instance of an object
中调用对象的实例是在加载/调用/初始化时,意味着实例变量只能在加载特定对象时使用