有人可以描述ERB文件中使用的以下字符的用法:
<% %>
<%= %>
<% -%>
<%# %>
Run Code Online (Sandbox Code Playgroud)
每个人的用法是什么?
假设我有以下字符串
@x = "<a href='#'>Turn me into a link</a>"
Run Code Online (Sandbox Code Playgroud)
在我看来,我想要显示一个链接.也就是说,我不希望@x中的所有内容都被取消转义并显示为字符串.使用之间有什么区别
<%= raw @x %>
<%= h @x %>
<%= @x.html_safe %>
Run Code Online (Sandbox Code Playgroud)
?
你如何评论html与ruby代码混合?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
Run Code Online (Sandbox Code Playgroud)
在jsp中它真的很简单:<%-- ... --%>
但是我无法在rails中找到任何简洁的选项.
简单的html注释<!-- ... -->
不起作用:ruby代码仍然执行并且会出错.
有一个选项可用于if false
html注释,但它非常冗长,更不用说IDE不支持它.
还有一种来自纯红宝石的选择,这令人惊讶地起作用.
<%
=begin %>
... html and ruby code goes here
<%
=end %>
Run Code Online (Sandbox Code Playgroud)
它通常很好,除了它冗长,看起来很奇怪,我知道没有任何ruby IDE支持它(是的,我喜欢用一次击键来评论/评论).
我很好奇,在轨道上有没有"正式"这样做?
谢谢!
我正在学习Rails,我看过这些模板引擎.我对他们没有经验(只有erb).
但由于我是初学者,我真的很困惑.你建议哪一个?为什么?Erb,Haml还是Slim?请告诉你理由偏爱其他人.如果您有任何其他建议,请告诉我们.
编辑:我不是在寻找胜利者.我只是想听听你对他们的看法,他们的语法,执行速度等等.
我有一个简单的fixture.yml
文件:
label:
body: "<%= variable %>"
Run Code Online (Sandbox Code Playgroud)
问题是ERB代码被解析为加载fixture的一部分,而我实际上希望body实际上是"<%= variable%>"(非插值).
如何逃避ERB标记?
我试过了:include_blank => true
,但没办法.
<select>
<%= options_for_select Model.all.collect{|mt| [mt.name, mt.id]} %>
</select>
Run Code Online (Sandbox Code Playgroud)
如果我需要将它添加到集合中,你会怎么做?
我必须忽略一些非常简单的东西,但我似乎无法弄清楚如何使用哈希映射的值渲染一个简单的ERB模板.
来自python的我对ruby比较新.我有一个ERB模板(不是HTML),我需要使用从哈希映射中获取的上下文来渲染,我从外部源接收.
但是,ERB的文档说明该ERB.result
方法需要一个binding
.我才知道,他们是保持着可变背景的红宝石东西(像locals()
和globals()
在python,我相信?).但是,我不知道如何从哈希映射中构建绑定对象.
一点点(很多,实际上)谷歌搜索给了我这个:http://refactormycode.com/codes/281-given-a-hash-of-variables-render-an-erb-template,它使用了一些红宝石元编程魔法逃避我
那么,这个问题不是一个简单的解决方案吗?或者是否有更好的模板引擎(不依赖于HTML)更适合这种情况?(我只选择了ERB,因为它在stdlib中).
我试图做输入的默认值
工作正常:
<%= f.input_field :quantity, default: '1' %>
Run Code Online (Sandbox Code Playgroud)
但我需要f.input而不是f.input_field
<%= f.input :quantity %>
Run Code Online (Sandbox Code Playgroud)
我尝试使用标准的html值 - 但在不成功的验证数量被1覆盖 - 不需要的
<%= f.input :quantity, input_html: {value: '1'} %>
Run Code Online (Sandbox Code Playgroud)当我删除值和验证是不成功的数量填充 - 一切都很好
<%= f.input :quantity %>
Run Code Online (Sandbox Code Playgroud)怎么解决这个?有没有像f.input_field那样的选择 - :默认?还是有其他有价值的解决方案?
erb ×10
ruby ×5
fixture ×1
haml ×1
html-select ×1
simple-form ×1
slim-lang ×1
templates ×1
unit-testing ×1