我有一个Sinatra应用程序,该应用程序将由不同的客户使用。我希望显示客户的公司徽标和每个客户的自定义layout.erb。
每个人的代码库基本相同。我需要的是一种轻松维护“Public”目录和“layout.erb”中不同文件集的方法,并且在部署到远程服务器时,仅自动复制特定客户端的文件。
最佳答案
一种可能的方法是在每个客户端上都有一个view
和public
目录,并为每个请求设置适当的:views
和:public
选项
get '/:client/...' do
set :views, File.dirname(__FILE__) + "/views/#{params[:client]}"
set :public, File.dirname(__FILE__) + "/public/#{params[:client]}"
# Your code
end
根据评论编辑:
在
config
块中设置您的公用文件夹。现在,为每个客户端将一个子文件夹添加到您的公用文件夹中。访问特定文件所需要做的就是修改 View 以获取
/#{params[:client]}/logo.png
而不是/logo.png