我有以下代码:
class ArticlesController < ApplicationController
def new
p self.class.object_id
@article = Article.new
end
def create
p self.class.object_id
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
private
def article_params
params.require(:article).permit(:title, :text)
end
end
Rails为每个请求创建一个新的控制器实例,因此我认为它们具有不同的对象ID。但是,self.class.object_id
在new
和create
动作中返回相同的值。为什么会这样呢?
答案 0 :(得分:4)
撰写buttonsContainer
时,您是在问您的班级的self.class.object_id
object_id
,而不是实例。当然,它们将是相同的。
尝试ArticlesController
或仅尝试self.object_id
,您会发现它们是不同的。
答案 1 :(得分:0)
由于self
的引用对象是ArticlesController
的对象,因此在启动服务器时,ArticlesController
被分配了object_id
。在类的上下文中调用它时,它每次都返回相同的object_id
。
答案 2 :(得分:0)