我有一个控制器:
def grafico_gantt
@mapa = Hash.new
@mapa[:tasks] = []
@projeto.atividades.each do |a|
@mapa[:tasks] << {
id:a.id,
descricao:a.descricao,
status:a.status,
data_inicial:a.data_inicial.to_datetime.to_i*1000,
tempo_gasto:a.tempo_gasto.to_i,
data_final:a.data_final.to_datetime.to_i*1000
}
end
end
还有一个.js.erb
<script>
$(function() {
"use strict";
$(".gantt").gantt({
source: [{
name: '<%= raw @mapa[:tasks][0][:descricao] %>',
desc: '<%= raw @mapa[:tasks][0][:status] %>'+"% concluído",
values: [{
from: "/Date(<%= raw @mapa[:tasks][0][:data_inicial] %>)/",
to: "/Date(<%= raw @mapa[:tasks][0][:data_final] %>)/",
label:"<%= raw @mapa[:tasks][0][:descricao] %>",
customClass: "ganttRed"
}]
}],
scale: "days",
minScale: "days",
maxScale:"months",
navigate: "scroll",
waitText: "Aguarde...",
});
</script>
我在数组中有3个值,但是,怎么看,我只取1,@ mapa [:tasks] [0] [:descricao] a可以取所有值吗?因为@mapa [:tasks] [:descricao]不起作用:/
谢谢!
首先,我将编写更类似于以下(未调试)代码的控制器:
def grafico_gantt
@mapa = {}
@mapa[:tasks] = @projeto.atividades.map { |a|
{
id: a.id,
descricao: a.descricao,
status: a.status,
data_inicial: a.data_inicial.to_datetime.to_i * 1000,
tempo_gasto: a.tempo_gasto.to_i,
data_final: a.data_final.to_datetime.to_i * 1000
}
}
end
要访问descricao
返回数组的所有元素,请使用map
或collect
将数组转换为所需的部分:
@mapa[:tasks].collect { |e| e[:descricao] }
map
并且collect
是同义词。尽管它们是别名,但有时在语法上使用有意义collect
,有时map
更有意义。
在上面的代码的重写中,为什么创建散列的哈希值有点令人困惑。哈希的单个元素散列有点...令人困惑...不雅,但是也许您没有向我们展示所有内容。
如果没有其他内容添加到哈希中,建议将其简化为:
def grafico_gantt
@mapa = @projeto.atividades.map { |a|
{
id: a.id,
descricao: a.descricao,
status: a.status,
data_inicial: a.data_inicial.to_datetime.to_i * 1000,
tempo_gasto: a.tempo_gasto.to_i,
data_final: a.data_final.to_datetime.to_i * 1000
}
}
end
这将返回哈希数组,并通过消除查找[:tasks]
元素的需要来简化对哈希的访问:
@mapa.collect { |e| e[:descricao] }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句