• Ruby Rails学习中:Ruby内置的辅助方法,基础内容回顾补充


    一. Ruby内置的辅助方法

    1.打开文件:app/views/layouts/application.html.erb(演示应用的网站布局)

    来咱把注意力放在圈起来的那一行:

    这行代码使用 Rails 内置的 stylesheet_link_tag 方法, 在所有媒介类型中引入 application.css 。对有经验的 Rails 开发者来说, 这行代码看起来很简单, 但是其中至少有四个 Ruby 知识点可能会让你困惑: 内置的 Rails 方法, 调用方法时不用括号, 符号(Symbol)和散列(Hash)。

    2. 自定义辅助方法

    Rails 除了提供很多内置的方法供我们在视图中使用之外,还允许我们自己定义。这种方法叫辅助方法(helper)

    来咱们来把注意力放在这行代码上:

    这行代码要求每个视图都要使用 provide 方法定义标题,例如:

    注:跟Python的Django框架中的母版语法类似, 如果在视图中不调用 provide 方法,也就是不提供变动的部分,那么得到的标题会变成:

    注:也就是说,标题中有公共部分,但前面还显示了竖线。

    为了解决这个问题, 我们要自定义一个辅助方法,名为 full_title 。如果视图中没有定义页面的标题, full_title 返回标题的公共部分, 即“Ruby on Rails Tutorial Sample App”; 如果定义了, 则在变动部分后面加上一个竖线,如下代码所示。

    打开文件:app/helpers/application_helper.rb(定义 full_title 辅助方法)

    现在,这个辅助方法定义好了,我们可以用它来简化布局。把下面这行:

    改成:

    <title><%= full_title(yield(:title)) %></title>

    为了让这个辅助方法起作用, 我们要在首页的视图中把不必要的单词“Home”删掉, 只保留标题的公共部分。首先, 我们要修改测试代码, 如下代码所示, 确认标题中没有字符串 "Home" 。

    接下来,看看自己的Guard测试:

    注:然后就是修改bug喽:

    打开文件:app/views/static_pages/home.html.erb(没定义页面标题的首页视图)

    把标注文件中的标注的语句注掉(Ctrl+/:快速注释)

    然后在看Gurad测试:

    注:测试通过了

    二. 字符串和方法

    1.控制台

    我们学习 Ruby 主要使用的工具是 Rails 控制台,它是用来与 Rails 应用交互的命令行工具。控制台基于 Ruby 的交互程序( irb )开发, 因此能使用 Ruby 语言的全部功能。

    $ rails console    # 开启控制台

    注:这两个控制台并没有区别

    2.注释

    #:最常用的就这一个

    3.字符串

    https://www.cnblogs.com/rixian/p/11636750.html

    4.对象和消息传送

    注:empty? 方法末尾有个问号,这是 Ruby 的约定,说明方法返回的是布尔值,即 true 或 false

    如果分支特别多的话就上elsif ( else + if )
    布尔值还可以使用 && (与)、 || (或)和 ! (非)运算符结合在一起使用
    在 Ruby 中一切都是对象,因此 nil 也是对象,所以它也可以响应方法

    注:这里介绍一下nil?, empty?,blank?三兄弟:

    5.定义方法:

    https://www.cnblogs.com/rixian/p/11634601.html

    6.回顾标题的辅助方法

    7.类

    注:类这需要说一下,千万不要让自定义的类的类名与内置的方法的类名相同,不然自己想想后果是啥

    (1).自已定义一个类,用来做一下说明(在应用的根目录中创建一个名为 example_user.rb 的文件)

    打开文件:example_user.rb(定义 User 类)

    注:来来,咱们来对刚才写的这些东西,做一个说明

    ①:attr_accessor :name, :email

    咱来看这一行:这行代码为用户的名字和电子邮件地址创建属性访问器存取方法(attribute accessor), 也就是定义读值方法(getter)和设值方法(setter), 用于读取和设定 @name 和 @email 实例变量前面就说过。在 Rails 中, 实例变量的意义在于, 它们自动在视图中可用。而通常实例变量的作用是在 Ruby 类中不同的方法之间传递值。实例变量都以 @ 符号开头, 如果未定义, 值为nil 。

    ②:def initialize(attributes={})

    attributes 参数的默认值是一个空散列, 所以我们可以定义一个没有名字或没有电子邮件地址的用户。(回想一下前面基础的内容,如果键不存在会返回 nil ,所以如果没定义 :name 键, attributes[:name] 返回 nil ,attributes[:email] 也是一样。)

    ③:def formatted_email

    @name 和 @email 都是实例变量(如 @ 符号所示),所以在 formatted_email 方法中自动可用。

    (2).测一测,测一测

    注:好介绍完毕删除example_user.rb文件 rm -rf

    。。。

    先到这,稍候继续

  • 相关阅读:
    c# 读取数据库得到dateset
    c# 读数据库二进制流到图片
    c# 读取数据库得到字符串
    c#打开颜色对话框
    WinForm-GridView
    arcengine 常用方法
    arcgis engine 调用arcgis server服务
    ae
    ae保存图层
    ae 打开地图文档
  • 原文地址:https://www.cnblogs.com/rixian/p/11686824.html
Copyright © 2020-2023  润新知