Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为用户托管CSS文件_Css_Ruby On Rails_Heroku_Cdn - Fatal编程技术网

为用户托管CSS文件

为用户托管CSS文件,css,ruby-on-rails,heroku,cdn,Css,Ruby On Rails,Heroku,Cdn,我正在尝试构建一个Rails/Heroku应用程序,让人们为简单的网站创建皮肤/主题 目前,我有一个原型,可以让你主题化你的页面,并下载一个CSS文件嵌入到你的网站上。我希望可以选择为用户托管CSS文件,而不是强迫他们下载它 最好的办法是什么?理想情况下,用户制作的CSS文件只能在其域上工作 我对CDN一无所知,在GitHub或Google上也找不到类似的开源示例。如果您对实现此功能的最佳方法有任何建议,我将不胜感激。取决于您希望用户能够自定义的程度。您是希望他们能够为现有框架选择颜色,还是希望

我正在尝试构建一个Rails/Heroku应用程序,让人们为简单的网站创建皮肤/主题

目前,我有一个原型,可以让你主题化你的页面,并下载一个CSS文件嵌入到你的网站上。我希望可以选择为用户托管CSS文件,而不是强迫他们下载它

最好的办法是什么?理想情况下,用户制作的CSS文件只能在其域上工作


我对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