Ruby on Rails Tutorial 第四章笔记 Rails 背后的 Ruby
作
者在这一章介绍了 Ruby 语言的数据结构(字符串,数组,哈希等等的相关操作),以及 Ruby 类,函数的概念,并通过这些概念来说明 Ruby 是这样来支撑 Rails 的:
- 通过 helpers(辅助方法),包括内置和自定义的方法.
- 通过 Ruby class 的继承关系,实例变量等.
尽管如此,作者仍然也强调了 Rails 的特性:
Rails 是用 Ruby 编写的,但 Rails 不是 Ruby. 有些 Rails 类就像普通的 Ruby 类一样,不过也有些得益于 Rails 的强大功能. Rails 是一门单独的学问,应该跟 Ruby 分开学习和理解.
helpers—— 辅助方法
辅助方法分为两种: Rails 内置的辅助方法 & 自定义的辅助方法.
Rails 内置辅助方法
内置的辅助方法可以直接进行调用.
如在 app/views/layouts/application.html.erb
中,有代码如下:<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
在 Ruby 中,函数的括号可以省略;同时,散列如果是最后一个参数,那么散列的花括号可以省略.
自定义辅助方法
位置: app/helpers/application_helper.rb
功能: 会在所有的控制器,视图,测试中能够直接调用该辅助方法;
但如果某个辅助方法是针对特定的控制器的,则应该放入该控制器的辅助方法中. 如 StaticPages 的控制器的辅助方法,位置在 app/helpers/application_helper.rb
原理: _helper.rb 文件开头有 module ApllicationHelper, 辅助方法所在的 module 会由 Rails 自动引入.
如果是自己编写的函数的模块,可以使用 include 把模块插入其他类中.
Ruby 类——之实例变量
下面以作者创建的 User 这个 class 来说明:
1 2 3 4 5 6 7 8 | class User attr_accessor :name , :email def initiate(attribute = {}) @name = attribute[ :name ] @email = attribute[ :email ] end end |
在这个 class 的第一行中, attr_accessor 用于定义 getter 和 setter, 读取和设定 @name, @email 实例变量.
在 Ruby 中, 实例变量可以跨函数使用,
在 Rails 中, 示例变量能在视图中可用.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具