Переменные Rails внутри CSS-файла - PullRequest
0 голосов
/ 05 июня 2018

У меня есть CSS-файл, который должен быть встроен пользователем.Теперь, чтобы пользователь мог настроить CSS-файл по своему усмотрению (главным образом, изменить цвета и размер шрифта), я должен сохранить эту информацию в файле базы данных, добавить эту информацию в конкретный CSS-файл и затем разрешить этому пользователю встраивать его.

Я бы получил идентификатор пользователя, которого я хочу изменить.Таким образом, сохраненные цветовые коды в основном извлекаются из

User.find(params[:id]).main_color 
# This would return => #fffff 

Вот как выглядит мой код для встраивания прямо сейчас,

<link href="link.com/initial.css" type="text/css" rel="stylesheet" /> 
<script type="text/javascript" data-user="18" src="link.com/some_file.js" />

Здесь data-user - идентификатор пользователя, который изменяетфайл CSS.(IFrame внедряется с использованием файла javascript)

Как мне изменить свой код для встраивания и извлечь пользовательские переменные из моей базы данных, чтобы сделать CSS cstomizable по желанию пользователя?

Заранее спасибо.

PS Я думал о переписывании CSS в представлении (файл .html.erb) и использовании там! Important вместе с правильными цветовыми кодами, выбранными пользователем, но такой подход не совсем эффективен.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Я бы предложил вам использовать его непосредственно в файле erb, например,

my.html.erb

<html>
<!-- my html -- >
</html>

<style>
 <%= my_css.html_safe %>
</style>
0 голосов
/ 05 июня 2018

Я думаю, что лучший способ - сохранить файл сценария на стороне сервера, поэтому вы можете легко изменить свой сценарий в зависимости от параметров базы данных пользователя

, например:

разместить новый маршрутв файле routs.rb

post '/users/modify_style', :to => 'users#modify_style', :as => modify_style

затем разрешите маршруту отвечать пользователю с помощью файла JavaScript, например, если пользователю необходимо изменить основной цвет шаблона HTML с помощью кнопки или ссылки;поэтому кнопка формы в шаблоне может выглядеть так:

<%= button_to 'apply style', modify_style_path, :data => {:user_id => current_user.id}, :remote => true %> 

или

<%= link_to 'apply style', modify_style_path(:user_id => current_user.id), :method => :post, :remote => true %>

, поэтому опция remote: true позволит отправлять данные на сервер через AJAX без обновления страницы.

at users_controller.rb

def modify_style 
    user = User.find(params[:user_id])
    @main_color = user.main_color
    respond_to do |format|
       format.js { render  'some_file.js.erb' }
    end

end 

и в вашем файле js:

$('#some_element_id_to_change_color_for').css('color', '<%= @main_color %>')

или вы можете добавить код действия modify_style непосредственно к исходному действию, которое загружаетВаша страница будет соответствовать пользовательскому стилю после загрузки страницы.

...