Javascript載入無效?


#1

repo

各位大神好,JS與rails的關係我一直沒學好,
這邊請教,我這個repo,使用 gentelella 這個theme
開root page確認有載入 init_DataTables()
但 datatable-buttons 這個ID要的效果確一直無法顯示
請問是何處流程有缺失呢?

  • 本以為tab會影響,但已試過去掉tab也無效果

期望
07%20AM

結果
25%20AM

晚備不周之處請多指導


#2

有 body tag 的起始但沒結束 … 這在做啥哩 … 你可以用 w3c html validator 之類的開發後記得掃,否則手殘害你一生(浪費你的生命),不過也不要因為怕手殘用 haml,因為你會浪費你未來 or 別人的生命 …

再來,當所有 action (HTML 動作 / 產生) 都是 JS,所有 view 都是 CSS,你的問題應該是 CSS 才是

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
*= require gentelella
*= require gentelella-custom

這種 theme 尤其 admin 有趣的地方是 … 我極度不建議用 gem … 因為連 helper 都沒有的話你不如載 static file 放在 public 就算了,否則 trace 原因太困難了,還不知道哪邊搞你,一般 theme + HTML 對照其實只要檔案/內容一樣效果就會一樣,所以在測試時你要收斂你可能發生的原因,類似你把你目前的頁面"存成HTML檔",丟到 public 下,就可以針對 HTML 開始測試開始修開始改,最精簡改對後大概就知道原因了,再回去修改該頁即可

再來就是你的專案內會出現很嚴重的覆蓋問題,類似你用了 gentelella,也用了 activeadmin,解釋給你聽 …

假設 gentelella base 於 bootstrap,有針對 bootstrap 複寫
假設 activeadmin base 於 bootstrap,有針對 bootstrap 複寫
假設 gentelella 和 activeadmin 的 bootstrap 的版本不同

光是載入順序就可能發生 N 種覆蓋狀況,你該怎樣收斂?anyway 如果你信任一套 theme,就只用一套,並從頭到尾按照他的方式實作,去找原生的 theme package(只有 CSS / JS / images …),然後小幅度的對 CSS / JS 進行修改,而非一昧的去找 gem 這種看似簡單方便又正確的解法(聽說很多人推廣這種蠢蛋方式?) … 因為 gem 內的 helper 通常很難用,客製化不足你找解法花時間,找不到還很幹,客製化自由度太高你又感覺煩且效能很慢(設定值過多),一票你用不到的 helper ,就算你不用還是會浪費你的記憶體,所以很多時候不如自幹算了,gem 內的 theme 永遠是舊版的(因為作者要花時間把最新版的 CSS theme 包裝成 gem 然後 release),gem 內的可能和官方發行的有差異,歸到最後你就會得到和我相同的結論才是:放在 public 內,helper / HTML 之類的全自幹,產出一樣的 HTML 就有一樣的結果,這不是方便簡單很多咪?

如果你自認是新手,則先略過 assets / turbolinks 之類的鬼唄,否則 … 你會花太多時間在 de 你不知道的 bug 的,等實務經驗多了,才去上那些東西唄


#3

感謝 JC 大大熱情神速回覆,晚輩受教,句句細細反省試練,稍晚回覆修正結果。
有發現多個gem css打架問題,謝謝指出。


#4

感謝 @JokerCatz 大大!
發現原來是該theme沒有成功載入我要的datatable功能,
後來手動加上後解決了我的問題。

亦使用您推薦的validator掃過後除去所有錯誤,

再次感謝您不辭辛勞為我們詳盡解答!!