这里有一些提示,只是为了提供一些关于 Ruby 方法的指针。
# Original
<%= @myquiz.each do |x|
puts "<div>" . x.quiz_ID . "</div>"
end %>
<%= expression %>
将使表达式在 HTML 中可见。因此,您必须操纵表达式的返回值。您正在使用.each
那里,而为此目的.map
更合适,因为它将返回一个数组,其中包含每个输入变量的块输出。
在块中最后一条语句是返回值,不需要打印东西。
最后,数组 like['A', 'B', 'C']
仍然希望通过一些换行符加入,所以表达式需要加入.join('<br />')
.
这是一团糟,但无论如何,这里是:
<%= @myquiz.map {|x| "<div>#{ x.quiz_id }</div>" }.join("<br />").html_safe %>
# or
<%= @myquiz.map(&:quiz_id).map { |id| "<div>#{ id }</div>" }.join("<br />").html_safe %>
不要在家里这样做。严重地。只需注意 .map 的工作原理,它如何收集返回值(最后一条语句),以及如何连接数组元素以形成字符串。
更多选项:
DHH 会怎么做?大概使用额外的括号,或者将逻辑移动到其他地方(到帮助器或装饰器中)并输出某种<%= quiz_results %>
.
我会怎么做?看看Slim并slim-rails
集成它和自动生成.html.slim
视图。
# In a slim view
- @quizzes.each do |quiz|
div = quiz.id