在Rails应用程序中管理多页面JavaScript的最佳方法是什么?

时间:2017-06-21 15:02:30

标签: javascript ruby-on-rails web-applications frameworks

我正在构建一个包含数百个html页面的Rails应用程序,它需要在每个页面上包含js库的唯一javascript。 Rails因为我对它更熟悉,也适用于其他后端目的。

为了获得一个想法,你可以举一个简单的代码转换(例如XML到JSON)在线工具的例子。这里将用于将xml数据转换为json的代码在HTML页面上用javascript编写。在我的情况下,我想制作100个这样的工具(即csv到json,html到pdf等),其中每个工具都独立于其他工具。我没有在数据库中存储这些数据,只包含将要使用工具的用户信息。因此基本上所有页面都将从单个控制器呈现。

请建议我更好的方法,或者我应该继续在每个HTML页面上编写javascript。谢谢。

2 个答案:

答案 0 :(得分: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

我试着简单地描述我的理想。请再次检查,确定它可以正常工作。

希望得到它的帮助。

答案 1 :(得分:0)

对于您的上述情况,我建议使用coffeescript OOP方法,下面是您的要求的详细信息和一些代码

  • 我建议您使用类方法咖啡,然后使用事件turbolinks检查每个页面:load
  • 您可以查看名称为的页面 控制器和方法例如$(&#34; .purchase_requests.new&#34;)[0]意味着控制器是purchase_requests和方法new
  • 我建议您阅读brandon hilkert博客,以获取以下一些额外参考:the link

示例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()