rails中javascript和控制器之间的通用代码

时间:2013-08-21 20:15:18

标签: ruby-on-rails

我有一组颜色,可以通过我的控制器和javascript文件访问

colors = ["#66c2a5", "#abdda4", "#abdda4", "#fee08b", "#fd8d3c", "#d53e4f"]      
red = ["#FFF", "#d53e4f"]  
special =  ["#d53e4f", "#d53e4f", "66c2a5", "#e0e0e0"]   

现在我在一个常见的javascript文件和一个公共控制器中重复了两次。

有没有办法让它更整洁,只把它放在一个地方?

编辑:我有两种图表(d3.js),有些是固定的,永远不会改变,有些是来自控制器的动态。

这两种图表都有这些颜色。

将颜色放在一个通用的控制器帮助器中并将它们传递给JS是否更好?或者我应该按照它们的方式保存它们(js和控制器中的颜色)

1 个答案:

答案 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请求。

我不知道其他任何方式。

我建议你这样离开。