为用户托管CSS文件
我正在尝试构建一个Rails/Heroku应用程序,让人们为简单的网站创建皮肤/主题 目前,我有一个原型,可以让你主题化你的页面,并下载一个CSS文件嵌入到你的网站上。我希望可以选择为用户托管CSS文件,而不是强迫他们下载它 最好的办法是什么?理想情况下,用户制作的CSS文件只能在其域上工作为用户托管CSS文件,css,ruby-on-rails,heroku,cdn,Css,Ruby On Rails,Heroku,Cdn,我正在尝试构建一个Rails/Heroku应用程序,让人们为简单的网站创建皮肤/主题 目前,我有一个原型,可以让你主题化你的页面,并下载一个CSS文件嵌入到你的网站上。我希望可以选择为用户托管CSS文件,而不是强迫他们下载它 最好的办法是什么?理想情况下,用户制作的CSS文件只能在其域上工作 我对CDN一无所知,在GitHub或Google上也找不到类似的开源示例。如果您对实现此功能的最佳方法有任何建议,我将不胜感激。取决于您希望用户能够自定义的程度。您是希望他们能够为现有框架选择颜色,还是希望
我对CDN一无所知,在GitHub或Google上也找不到类似的开源示例。如果您对实现此功能的最佳方法有任何建议,我将不胜感激。取决于您希望用户能够自定义的程度。您是希望他们能够为现有框架选择颜色,还是希望他们能够上传自己的完整自定义样式表 为了安全起见,如果您允许用户添加他们自己的自定义样式表,css应该得到净化,这样用户就不会运行恶意代码(参见示例) 如果您只想让用户能够自定义现有主题,您可以做一些类似于User has_one:style where的事情
class StylesController < ApplicationController
def create
@style = current_user.build_style(style_params)
if @style.save
flash[:success] = "Style saved!"
end
end
def show
@style = Style.find(params[:id])
respond_to do |format|
format.html
format.css
end
end
private
def style_params
params.require(:style).permit(:name, :font1, :color1, :color2, :color3, :color4, :fontsize)
end
和
在application.html.erb的标题中'data-turbolinks-track'=>“reload”
是防止turbolinks跨其他用户域持久化一个用户的自定义样式表所必需的 取决于您希望用户能够自定义的程度。您是希望他们能够为现有框架选择颜色,还是希望他们能够上传自己的完整自定义样式表
为了安全起见,如果您允许用户添加他们自己的自定义样式表,css应该得到净化,这样用户就不会运行恶意代码(参见示例)
如果您只想让用户能够自定义现有主题,您可以做一些类似于User has_one:style where的事情
class StylesController < ApplicationController
def create
@style = current_user.build_style(style_params)
if @style.save
flash[:success] = "Style saved!"
end
end
def show
@style = Style.find(params[:id])
respond_to do |format|
format.html
format.css
end
end
private
def style_params
params.require(:style).permit(:name, :font1, :color1, :color2, :color3, :color4, :fontsize)
end
和
在application.html.erb的标题中'data-turbolinks-track'=>“reload”
是防止turbolinks跨其他用户域持久化一个用户的自定义样式表所必需的 我将研究AmazonAWS,您可以通过将其与rails集成。如果你试着从上传和托管文件(不是特别是CSS文件)的角度来解决这个问题,你会发现有很多教程和资源。我会研究AmazonAWS,你可以通过以下方式将其与rails集成。如果你试着从上传和托管文件(特别是CSS文件)的角度来解决这个问题,你会发现有很多教程和资源。
def user_style(user)
if user.style.present?
content_for :stylesheet_includes do
stylesheet_link_tag user.style.path, media: 'all', 'data-turbolinks-track' => "reload"
end
end
end