次要路线

时间:2014-04-10 22:44:49

标签: ruby-on-rails ruby

我试图找出在Rails中定义资产的辅助路由的最佳方法。

例如,我在这里有一个javascript文件:

/assets/scripts/my-script.js

但是我想创建一个到同一个文件的新路由,例如:

/api/v1/my-script.js

我试过了:

  namespace :api do
    namespace :v1 do
      resources :images, only: [:show, :create]
      match 'my-script.js', :path => '/assets/scripts/my-script.js', :via => 'get'
    end
  end

但它确实转发到/assets/scripts/my-script.js。我想保留新的浏览器网址,而不是转发到原始路径。

1 个答案:

答案 0 :(得分:1)

我不确定路线是否可以这样使用。如果你愿意,你可以制作一个为这些资产提供服务的控制器。

这是未经测试的,但应该深入了解。

namespace :api do
  namespace :v1 do
    resources :images, only: [:show, :create]
    get 'my-script.js', to: 'scripts#my'
  end
end

class Api::V1::ScriptsController < ApplicationController
  def my
    send_file ActionController::Base.helpers.javascript_path("my-script.js")
  end
end

当然有点笨拙,可以概括为任何剧本服务。