学习中: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

。。。

先到这,稍候继续

原文地址:https://www.cnblogs.com/rixian/p/11686824.html

时间: 2024-10-22 10:07:02

学习中:Ruby中的辅助方法和基础内容回顾补充的相关文章

MVC视图中Html常见的辅助方法

署名:冯兵   弱类型 强类型 单行文本框  Html.TextBox()  Html.TextBoxFor() 多行文本框  Html.TextArea()  Html.TextAreaFor() 密码框  Html.Password()  Html.PasswordFor() 复选框  Html.Checkbox()  Html.CheckboxFor() 单选按钮  Html.RadioButtion()  Html.RadioButtionFor() 下拉列表框  Html.Dropdo

如何在asp.net mvc中添加自定义的HTML辅助种方法

很久没在博客园发表文章了,今天来总结一下如何在asp.net mvc中添加自定义的HTML辅助方法.我们现在设计这么一个目前,利用自定义的HTML方法来渲染一个普通的img标记.直接进入主题吧: 首先我们先来看一下一个普通的img标签在HTML中的代码: <img src="Content/images/封面.jpg" alt="图片" id="img01" width="500px" height="250p

理解Ruby中的作用域

作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够,但在你看看完我的这篇文章后,相信你不会再担心会遇到这些头疼的问题. 什么是作用域? 当谈论到作用域的时候,应该马上想到变量和可见性这两个词,变量和可见性是作用域的主要内容,没错,作用域就是关于在代码的什么地方什么变量是可见的,当你充分了解了作用域后,给你一段代码,你可以轻易知道此时什么变量是可见的,

MVC学习系列[email&#160;protected]辅助方法和用户自定义HTML方法

在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类,分成三个类型: Inline HTML helpers[内联的HTML帮助类,例如@Html.Label等] Built-in HTML helpers[也就是嵌套的HTML帮助类,即@helper辅助方法] Custom HTML helpers[自定义的HTML帮助类] 在这里,我们学习第二种,

ASP.NET MVC3学习心得-----表单和HTML辅助方法

5.1表单的使用 5.1.1  action和method的特性 表单是包含输入元素的容器,包含按钮.复选框.文本框等元素,表单的这些输入元素使得用户能够向页面中输入信息,并把输入信息提交给服务器.Action特性告知浏览器将URL提交到哪里,method特性来说明用何种方式告知浏览器,默认为get方法 5.1.2Get和Post方法 1.如果不想让浏览器把输入值放入查询字符串中,而是想放入HTTP请求的主体中,可以为method赋值post,post可以用来提交信用卡信息.向购物车添加专辑或者

Lua语言基础汇总(8) -- Lua中的元表与元方法

前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算.在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了.那本文就是主要讲的是如何定义这个指定的函数,这个指定的函数是什么?希望对学习Lua的朋友有帮助. Lua是怎么做的? 通常,Lua中的每个值都有一套预定义的操作集合,比如数字是可以相加的,字符串是可以连接

[转]Lua中的元表与元方法

前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算.在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了.那这篇博文就是主要讲的如果定义这个指定的函数,这个指定的函数时什么?希望对学习Lua的朋友有帮助. Lua是怎么做的? 通常,Lua中的每个值都有一套预定义的操作集合,比如数字是可以相加的,字符串是可以连

004.MVC视图、辅助方法

一.视图基础- 视图定义: 用户界面,是显示应用程序用户界面(UI)组件 Web应用程序:页面 作用: 1.输出/显示模型数据 2.出入提交 视图建议在View文件夹位置存储视图 视图引擎(了解):本意发动机,这里指的是:处理视图的软件(框架内部) ASP.NET Web窗体提供了一种视图引擎,称为Web窗体引擎 ASP.NET MVC1及MVC2版本中支持Web窗体引擎 ASP.NET MVC3版本除了支持Web窗体引擎,还提供了一种新的视图引擎,称为Razor(视图)引擎 Razor引擎更加

(转)表单和HTML辅助方法 - ASP.NET MVC 3

——选自<ASP.NET MVC3 高级编程(第5章)  孙远帅 译> ——微软ASP.NET MVC系列书籍地址: http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-MVC-3.productCd-1118076583.html 第5章 表单和HTML辅助方法  本章内容简介: * 理解表单 * 如何利用HTML辅助方法 * 编辑和输入的辅助方法 * 显示和渲染的辅助方法 顾名思义,HTML辅助方法是用来辅助HTML开发的