Rails如何选择要渲染的实例变量的版本?

时间:2018-08-02 21:41:20

标签: ruby-on-rails ruby-on-rails-5

我对Rails还是很陌生,我想了解为什么Rails选择实例变量的一个版本而不是另一个版本。

在控制器中,我定义了实例变量。

def show
    @discussions = Discussion.all.order('created_at desc')
  end

 def new
    @discussion = current_user.discussions.build
  end

如果我要在其中一个视图中调用@discussion,它将选择哪个版本的变量?

2 个答案:

答案 0 :(得分:0)

控制器中的每个动作(shownew)对应于相同名称并呈现视图。因此,控制器中的show方法将呈现app/views/controller_name/show.html.erb,除非您通过显式调用render来另行声明。

show.html.erb可用的唯一实例变量是控制器的show操作中定义的实例变量。其他动作也一样。

答案 1 :(得分:0)

我对Rails也还是陌生的,但让我努力。我认为在两种情况下,@discussion都是同一件事,它被分配给它。因此,在代码段中,如果您对/ controller_route / new进行GET调用,它将准确显示您的意图-geom_vline

如果您对data.frame进行GET调用,因为您尚未定义它,所以它将为current_user.discussions.build/controller_route与评估无关。

但这又是我的猜测;很高兴对此进行教育/纠正。