aar*_*ona 1 ruby-on-rails erb ruby-on-rails-3 rails-3-upgrade
好好看一些播客,我已经看到在Rails 3中,我们需要<%= %>现在使用标签,而不是之前.但是只需将它放在我的application.html.erb文件中:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head></head>
<body>
<%= if true %>
true
<% end %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
不会像我预期的那样呈现'真实'.相反,我得到一个错误:
Showing /app/views/layouts/application.html.erb where line #5 raised:
/app/views/layouts/application.html.erb:5: syntax error, unexpected ')', expecting keyword_then or ';' or '\n'
');@output_buffer.append= ( if true );@output_buffer.safe_concat('
^
/app/views/layouts/application.html.erb:7: syntax error, unexpected keyword_end, expecting ')'
'); end
^
/app/views/layouts/application.html.erb:10: syntax error, unexpected keyword_ensure, expecting ')'
/app/views/layouts/application.html.erb:12: syntax error, unexpected keyword_end, expecting ')'
Extracted source (around line #5):
2: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3: <head></head>
4: <body>
5: <%= if true %>
6: true
7: <% end %>
8: </body>
Run Code Online (Sandbox Code Playgroud)
回到旧<% %>标签修复了这个问题.它是否正确?rails开发人员是否决定切换回旧标签,或者我错过了什么?
rails -v 得到我: Rails 3.0.5
有任何想法吗?
这仅适用于某些标签.例如,<% form_for ... %>成了<%= form_for ... %>.在这种情况下,你只需使用<% if true %>.原因是form_for生成输出,所以你使用<%= %>.简单的if语句不会生成输出,因此您可以使用<% %>.循环等同样如此:你只是继续使用<% %>.
这里也解释了:
form_for会将表单标记插入到块中内容周围的视图中,但erb标记中没有等号.这打破了erb阻止输出代码到视图的规则应该使用<%=%>的规则,并且使得在以前版本的Rails中使用form_for的内部结构变得困难.但是,从[Rails版本3]开始,我们在这里使用等号,就像生成输出的任何其他erb代码一样.
| 归档时间: |
|
| 查看次数: |
1958 次 |
| 最近记录: |