2017-06-21 97 views
0

我正在構建一個包含數百個html頁面的Rails應用程序,它需要在每個頁面上包含js庫的獨特javascript。 Rails因爲我更熟悉它,也適用於其他後端目的。在Rails應用程序中管理多頁JavaScript的最佳方法是什麼?

爲了得到一個想法,你可以舉一個簡單的代碼轉換(例如XML到JSON)在線工具的例子。這裏將xml數據轉換爲json的代碼是用JavaScript在HTML頁面上編寫的。在我的情況下,我想製作100個這樣的工具(即csv到json,html到pdf等),每個工具都獨立於其他工具。我不會從數據庫中存儲任何數據,而只是將要使用工具的用戶信息。所以基本上所有的頁面都將從一個控制器渲染。

請建議我更好的方法,或者我應該繼續在每一個HTML頁面上寫javascript。謝謝。

+0

我不知道有understoo您的應用程序結構。當你說「網頁」是它的控制器視圖? – Maxence

+0

我編輯了這個問題,請檢查。 –

+0

從技術上來說,rails只能用於存儲用戶數據,而這些「頁面」只能由單個控制器呈現。它們與數據庫無關 –

回答

0

對於你的情況上面,我想使用CoffeeScript的OOP方法建議,下面是細節和您的要求

  • 一些代碼,我建議你使用咖啡類的方法,然後選中與事件的每一頁turbolinks:負載
  • 可以查看哪個頁面, 控制器的名稱,例如:$(「 purchase_requests.new」)的方法[0]這意味着控制器purchase_requests和新方法
  • 我也建議你閱讀brandon hilkert博客的一些額外的參考如下是與檢查

樣本CoffeeScript的每個頁面加載

class App.PurchaseRequest 

    renderYourJavascript: -> 
    console.log "purchase request js" 

$(document).on "turbolinks:load", -> 
    if $(".purchase_requests.new")[0] || $(".purchase_requests.edit")[0] 
    purchase_request = new App.PurchaseRequest 
    purchase_request.renderYourJavascript() 
0

我不知道我理解你的理想。但是,我認爲你可以嘗試將你的JavaScript代碼保存到數據庫中。 而你使用控制器從數據庫讀取JavaScript代碼並將其呈現爲JavaScript文件。

例子:

# routes.rb 
get '/js/:file_name.js', to: 'javascripts#show' 

# model 
Javascript(id: :interget, name: :string, content: :text) 

# controller 
class JavascriptsController < ApplicationController 
    def show 
     js = Javascript.find_by_name(params[:file_name]) 
     respond_to do |format| 
     format.js { js.content if js.present? } 
     end  
    end 
end 

我儘量簡單的描述我的理想。請再次檢查,並確定它可以正常工作。

希望它的幫助。

+0

謝謝,對於響應單頁在這裏本身是一個完整的單頁應用程序,並需要大量的JavaScript代碼和依賴庫。我不認爲將它們存儲在數據庫中是一個好方法。其實,我甚至不想爲此使用數據庫。我已經用細節編輯了這個問題。請檢查 ... –

相關問題