사용자가 원하는대로 지정할 수 있는지에 따라 다릅니다. 기존 프레임 워크의 색상을 선택할 수있게 하시겠습니까? 아니면 자신 만의 완전한 사용자 정의 스타일 시트를 업로드 할 수있게 하시겠습니까?
보안을 위해 사용자가 자신의 사용자 정의 스타일 시트를 추가하도록 허용하는 경우 css가 감염되어 사용자가 악의적 인 코드를 실행할 수 없도록해야합니다 (예 : this answer 참조). 당신은 단지 사용자가 기존의 테마를 사용자 정의 할 수있게하려면
, 당신은 사용자 has_one처럼 뭔가를 할 수 : 스타일을
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
플러스 형태는 사용자가 정의 할 수 있도록하려는 속성을 편집 할 경우 ,
.text-primary {
color: <%= @style.color1 %>;
}
및
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
같은 도우미와 사용자의 페이지에 스타일 시트를로드 같은과 show.css.erb application.html.erb 헤더에
및 <%= yield :stylesheet_includes %>
'data-turbolinks-track' => "reload"
은 터보 링크가 한 사용자의 사용자 정의 스타일 시트를 다른 사용자의 도메인에 유지하지 못하게하는 데 필요합니다.
아마존 AWS를 살펴볼 것입니다. [paperclip, dragonfly 또는 carrierwave] (https://infinum.co/the-capsized-eight/best-rails-image-uploader-paperclip-carrierwave)를 통해 레일과 통합 할 수 있습니다 -refile). 파일 업로드 및 호스팅 (특히 CSS 파일 제외)의 관점에서 문제를 접근하려고 시도하면 자습서 및 리소스가 많이 있음을 알 수 있습니다. – max