我有一组颜色,可以通过我的控制器和javascript文件访问
colors = ["#66c2a5", "#abdda4", "#abdda4", "#fee08b", "#fd8d3c", "#d53e4f"]
red = ["#FFF", "#d53e4f"]
special = ["#d53e4f", "#d53e4f", "66c2a5", "#e0e0e0"]
现在我在一个常见的javascript文件和一个公共控制器中重复了两次。
有没有办法让它更整洁,只把它放在一个地方?
编辑:我有两种图表(d3.js),有些是固定的,永远不会改变,有些是来自控制器的动态。这两种图表都有这些颜色。
将颜色放在一个通用的控制器帮助器中并将它们传递给JS是否更好?或者我应该按照它们的方式保存它们(js和控制器中的颜色)
答案 0 :(得分:0)
如果您使用两种不同的语言,这并不重复。
如果由于某种原因它变得更大,我唯一想到的就是将它们放在控制器中,然后对ruby进行AJAX调用:
您可以将它们放在哈希中:
all_colors =
{ colors: ["#66c2a5", "#abdda4", "#abdda4", "#fee08b", "#fd8d3c", "#d53e4f"],
red: ["#FFF", "#d53e4f"],
special: ["#d53e4f", "#d53e4f", "66c2a5", "#e0e0e0"]
}
然后你可以在控制器动作中将它们渲染为json:
render json: all_colors
但是你还必须编写javascript AJAX部分,那将是复杂的,你会向你的服务器发出更多的HTTP请求。
我不知道其他任何方式。
我建议你这样离开。