ruby - 在ror中正确的将变量传到view的做法是怎么的?

 祥荣华贵 发布于 2022-10-25 10:54

初学ruby,ror中生成了一个controller和view,代码如下:

class MyController < ApplicationController
  def index
    @output="123"
  end
end

我的问题是,为什么变量必须加上AT才能传入view?如果去掉AT,就会报错,AT是什么关键字还是框架约定?什么原理?如果可以请告诉我通识的写法,谢谢

也许这个问题太无聊,但我不太清楚该如何描述,所以也没有搜索到相关信息。

4 个回答
  • 使用@开头的变量为实例变量.
    在你的场景下,当你发起http请求后,被rails路由机制,匹配到MyController的index方法做响应.
    于是会发生下面的事情:
    1.初始化一个MyController实例,执行index方法.
    2.设置该控制器的实例变量@output为'123'.
    3.由于你未特殊指定任何render,将默认渲染index.html.erb
    4.拷贝控制器的所有实例变量(去除掉部分不应该被拷贝的)
    5.实例化一个view,并将刚刚从控制器中拷贝出的实例变量设置到该view中.
    6.这样你就可以在view中获取到这个实例变量了.

    2022-10-26 23:15 回答
  • Ruby 里的 @ 就相当于 Python 里的 self

    2022-10-26 23:15 回答
  • @开头的变量在Ruby里是实例变量,与之相对,@@开头的变量是类变量。
    Rails里在控制器和视图之间是通过实例变量来传递数据的。这个过程是默认的,不需要显式传递。

    记住这个规则就可以。

    2022-10-26 23:15 回答
  • Ruby中的@var是实例变量,在类的所有方法中都可以访问到;不包含@的变量,它的作用域就是当前方法内。

    ROR是在当前方法执行完之后,通过调用另外一个方法来渲染模板。这样在两个方法之间传递变量,最方便的就是使用实例变量了。如果用普通变量的话,超出了作用域,自然会报错。

    2022-10-26 23:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有