我有一个Sinatra应用程序,该应用程序将由不同的客户使用。我希望显示客户的公司徽标和每个客户的自定义layout.erb。

每个人的代码库基本相同。我需要的是一种轻松维护“Public”目录和“layout.erb”中不同文件集的方法,并且在部署到远程服务器时,仅自动复制特定客户端的文件。

最佳答案

一种可能的方法是在每个客户端上都有一个viewpublic目录,并为每个请求设置适当的: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

10-07 19:07
查看更多