Ruby on Rails Tutorial 第四章笔记 Rails 背后的 Ruby

者在这一章介绍了 Ruby 语言的数据结构(字符串,数组,哈希等等的相关操作),以及 Ruby 类,函数的概念,并通过这些概念来说明 Ruby 是这样来支撑 Rails 的:

  1. 通过 helpers(辅助方法),包括内置和自定义的方法.
  2. 通过 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 中, 示例变量能在视图中可用.

posted @   FBshark  阅读(120)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
点击右上角即可分享
微信分享提示