作为rails的新手,请让我知道注释单行的方法,并在*.html.erb文件中注释掉一行.
我已经开始了一些rails教程,并注意到一些视图代码块就像
<h1><%= @subject.name -%></h1>
Run Code Online (Sandbox Code Playgroud)
和其他代码块一样
<h1><%= @subject.name %></h1>
Run Code Online (Sandbox Code Playgroud)
- %>和%>之间有什么区别
如果你知道一些很好的语法参考,你可以指出我,这也会有所帮助.
我想我想要做的很简单,我真的不确定为什么这不起作用.我正在使用Rails 3.
本质上,我只是尝试从现有模型中的列中选择不同的值,并将它们全部打印出来.在大多数情况下,这是有效的,但我视图中的.each循环也最终在循环结束时打印整个数组.(
我是一个名为"景点"的模型,每个景点都有一个类别(现在为了简单起见,类别在数据库中是硬编码的).
这是吸引力模型和类方法"all_categories"定义的......
class Attraction < ActiveRecord::Base
def self.all_categories
Attraction.select("DISTINCT category")
end
end
Run Code Online (Sandbox Code Playgroud)
这是吸引控制器
class AttractionsController < ApplicationController
def index
@categories = Attraction.all_categories
@attractions = Attraction.find(:all)
end
def show
@attraction = Attraction.find(params[:id])
end
end
Run Code Online (Sandbox Code Playgroud)
这是我认为造成麻烦的代码 - 没有火箭科学,只是一个简单的迭代器,......
<%= @categories.each do |c| %>
<%= c.category %><br/>
<% end %>
Run Code Online (Sandbox Code Playgroud)
很简单吧?这一切都运行良好,但这是我在运行代码段时看到的:
Architecture
Art
Fashion
Music
[#<Attraction category: "Architecture">, #<Attraction category: "Art">, #<Attraction category: "Fashion">, #<Attraction category: "Music">]
Run Code Online (Sandbox Code Playgroud)
为什么最后打印出阵列?我想要的只是一个类别列表:
Architecture
Art
Fashion
Music
Run Code Online (Sandbox Code Playgroud)
很明显,我是Ruby/Rails的新手,我试图寻找解决方案.有什么明显的东西让我失踪吗?
感谢任何帮助.
我正在尝试将字符串值分配给我的.erb文件中的javascript对象,如下所示:
var data = {
'name': '<%= @product.name %>',
...
};
Run Code Online (Sandbox Code Playgroud)
问题是,如果值name
是Tom's small ears
,
输出data.name
将是Tom's small ears
.
有没有办法逃脱特殊字符?
我尝试过,'name': '<%= raw @product.name %>'
但Uncaught SyntaxError: Unexpected identifier
输出到控制台.
做<%= escape_javascript @product.name %>
输出Tom\'s small ears
编辑
@Stefan在MrYoshiji's
回答中的评论对我有用.
我是Chef,ruby,ruby DSL和erb的新手.我来自python.在ruby erb模板中,我想做这样的事情.
<% if node[:monit][:server]=='nginx' -%>
ALL OF MY NGINX TEXT
<% end -%>
<% if node[:monit][:server]=='redis' -%>
ALL OF MY REDIS TEXT
<% end -%>
Run Code Online (Sandbox Code Playgroud)
很明显,我错过了正确的语法.
谢谢
许多来源(例如erb的含义是什么?谷歌搜索的前四个结果中的三个)引用http://ruby-doc.org/stdlib-1.8.7/libdoc/erb/rdoc/ERB .html作为ERB格式的官方文档,但它实际上只是为您提供API而不是文件格式.
我在http://docs.puppetlabs.com/guides/templating.html#erb-template-syntax中找到了一个不错的小摘要,但是必须有更正式的东西,对吧?谁是"定义权威"?这是来自Rails吗?
由于一些人喜欢知道问题背后的动机,我正在寻找关于ERB标签不能跨越多条线的相当基本约束的文档,而这反过来又出现了最近看到多个SO问题,其中OP显然没有意识到这种约束.
更新:鉴于@ sawa的回答引用了日本传统,请允许我澄清一下我对文档的最官方"英文"版本感兴趣.
对不起这个问题,我认为它更具有offtopic,但我在谷歌上找不到任何东西!
我现在多次看到很多人使用-%>
而不仅仅是%>
.什么意思?
例:
<% @images.each_slice(6) do |slice| -%>
<div class="gallery">
<% slice.each do |image| -%>
<%= image_tag(image.url, :alt => image.alt) %>
<% end -%>
</div>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
在这里,他也用于-%>
所有积木.
我在Rails视图中被这个奇怪的输出所困扰.这是我的模型:
class Comment < ActiveRecord::Base
belongs_to :post
end
Run Code Online (Sandbox Code Playgroud)
以下是我的观点的相关部分.我已经将问题隔离到这个代码块,特别是在最后一次迭代之后和循环结束之前发生的任何事情<% end %>
.如果我注释掉每次迭代中打印的实际文本,原始数组仍然会打印出来.
<h2>Comments</h2>
<%= @post.comments.each do |comment| %>
<p>
<strong>Commenter:</strong>
<%= comment.commenter %>
</p>
<p>
<%= comment.body %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是奇怪的输出(带样本注释.):
评论者:迈克尔
好帖子.
评论者:迈克尔
好帖子.
评论者:迈克尔
测试.
评论者:约翰
阵列仍然有趣吗?
[#<Comment id: 1, commenter:
"Michael", body: "Good post.",
post_id: 1, created_at: "2011-01-12
03:51:20", updated_at: "2011-01-12
03:51:20">, #<Comment id: 2,
commenter: "Michael", body: "Good
post.", post_id: 1, created_at:
"2011-01-12 03:52:06", updated_at:
"2011-01-12 03:52:06">, #<Comment id:
3, commenter: "Michael", body: …
Run Code Online (Sandbox Code Playgroud) <%= some_code %>
在使用Ruby on Rails时,我总是习惯将Ruby插入HTML.我刚刚注意到其他项目有时会使用<%= some_code -%>
.
我发现这个"没有替换回输出执行",但也许我的英语不太好,我真的不明白这意味着什么.任何人都可以帮忙吗?
ruby ×5
arrays ×1
chef-infra ×1
coding-style ×1
convention ×1
erb ×1
escaping ×1
javascript ×1
models ×1
views ×1