2013-08-21 20 views
1

我有一組顏色這是我的控制器都和JavaScript文件公共代碼在軌JavaScript和控制器之間

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

現在在一個共同的JavaScript文件我已經這樣重複兩次,共用控制器訪問。

有沒有辦法讓這個更加整潔,只把它放在一個地方?

編輯:我有兩種圖表(d3.js),有些是固定的,將永遠不會改變,有些是動態的來自控制器。

這些顏色對兩種圖表都是通用的。

是更好地把顏色在一個共同的控制器助手,並把它們傳遞給JS或者我應該保持的東西,他們是(按JS和控制器顏色)的方式

+0

我不知道你在做什麼,但一般情況下,你不需要在你的控制器中處理表示的代碼。你能解釋你想要做什麼並展示一些代碼嗎? – RobertH

+0

我同意你說得對。我有固定的JS圖表和這些顏色,我也有我的控制器生成的動態圖表(參數(顏色和數據)傳遞給JavaScript)。 – nevermind

+0

也許我只是把他們放進一個幫手,並將它們傳遞給兩種類型的圖表的JS ... – nevermind

回答

0

這不是太大的重複如果你使用兩種不同的語言。

如果是大很多出於某種原因,這使我心中的唯一的事情就是讓他們在一個控制器,並進行了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請求。

我不知道任何其他方式。

我建議你這樣離開它。

相關問題