`

Rails中一些特殊地方

    博客分类:
  • Ruby
 
阅读更多
1. -%>
<% 3.times do %>
Ho!<br />
<% end %>
Merry Christmas!
这会生成下列 HTML: Download erb/ex2.op
Ho!<br />
Ho!<br />
Ho!<br />
Merry Christmas!
可以看到,每当Ruby 循环执行一次,其中的文本都会被发送到输出流。
但这里还是有些不大容易理解的事情:这些空行是从哪里来的?它们来自输入文件。认真想想就会发现,模板源文件在第一行与第三行的“%>”标记后面都加上了换行符。模板经过渲染之后,<% 3.times do %>这句代码消失了,换行符却留了下来。循环每执行一次,输出的内容中就增加一个换行符,然后才是“Ho!”这行文字。同样的,<% end %>代码后面的换行符被插入到了最后一个“Ho!”与“Merry Christmas!”之间。
一般而言,这不是什么大问题,因为HTML 并不关心空白字符。不过,如果你用模板机制来创建电子邮件,或是生成的HTML 中包含<pre>代码块,就需要去掉这些空行。为此,只要把html.erb代码的结尾标记由“%>”改为“-%>”即可,这里的减号就会告诉Rails 将紧随其后的换行符全部去掉。如果我们给“3.times”这句代码的结尾标记加上一个减号:
<% 3.times do -%>
Ho!<br />
<% end %>
Merry Christmas!
我们就会得到下列输出9:
Ho!<br />
Ho!<br />
Ho!<br />

2. %{„}这样的符号。这是字符串字面量的另一种写法——就跟双引号一样,不过更适用于长字符串。
分享到:
评论

相关推荐

    Ruby Pocket Reference.pdf

    预定义变量(Predefined Variables)和伪变量(Pseudovariables)在 Ruby 中有特殊的含义和用途,比如 $stdout、$stderr 等。 #### 全局常量 全局常量(Global Constants)在 Ruby 程序中是预定义的,并且在程序的...

    ruby语言基础

    12. **Rails框架**:Ruby on Rails是基于Ruby的最受欢迎的Web开发框架,它遵循“约定优于配置”的原则,极大地提高了开发效率。 学习Ruby的基础,需要熟悉以上这些核心概念,并通过实践编写代码来加深理解。...

    ruby初学者教程(对初学者很有帮助)

    特殊方法是指那些在Ruby中具有特殊含义的方法,例如`initialize`、`==`等。 **3.5 类变量与类方法** 类变量是以`@@`开头的变量,可以在类的所有实例之间共享。类方法则是定义在类本身上的方法。 ```ruby class ...

    deskjockey:Zendesk的自定义反馈和支持小部件

    首先,在某个地方设置并运行此Rails项目。 它不需要数据库或其他任何特殊的东西。 然后,添加标记以加载javascript并为其提供一个点击链接(您可以根据自己的喜好对此链接进行样式设置): &lt; script id =" ...

    ruby基础学习资料

    学习这些基础后,你将能够编写简单的Ruby程序,理解面向对象编程的基本概念,并逐步探索更高级的主题,如元类、Gem包管理、Rails框架等。这个压缩包中的资料应该会涵盖这些内容,帮助你系统地学习和实践Ruby编程。...

    存储XSS1

    攻击者通过在这些地方插入恶意脚本,如`&lt;script&gt;alert('xss')&lt;/script&gt;`,当其他用户浏览含有恶意脚本的页面时,浏览器会执行这段代码,显示一个弹窗提示“xss”。 **二、危害** 1. **信息泄露**:攻击者可以利用...

    angularity:学习 Angular 以获得乐趣和利润

    7. **服务(Services)**:用于封装应用中的共享逻辑或数据,可以跨组件复用,通过DI注入到需要的地方。 8. **路由(Routing)**:Angular的路由系统允许你根据URL导航到不同的页面或组件,实现页面间的无刷新跳转...

    边缘计算-边缘计算的解决方案.docx

    边缘计算是一种分布式计算模型,它将数据处理和分析任务推送到网络的边缘,即靠近数据源和终端设备的地方,以减少延迟,优化带宽使用,提高数据安全性,并增强物联网(IoT)系统的响应能力。边缘计算与云计算相结合,...

    Head-First.Ruby

    3. **块、 Proc 和 Lambda**:Ruby中的块是一种特殊的代码结构,可以与方法一起使用,Proc和Lambda则可以捕获代码块并作为对象存储。 4. **闭包**:Proc和Lambda都是闭包,能保留其定义时的作用域,允许在其他地方...

    pwordgenerator_mf

    4. **后端开发**:如果项目包含后端部分,可能会使用如Node.js、Python Flask/Django、Ruby on Rails或其他服务器端语言来处理用户请求,存储生成的密码历史,或提供更复杂的验证逻辑。 5. **安全性**:考虑到这是...

Global site tag (gtag.js) - Google Analytics