我有CSS文件,需要由用户嵌入。现在,为了让用户按照自己的意愿定制CSS文件(主要是更改颜色和字体大小),我必须将该信息存储在数据库文件中,将该信息附加到特定的CSS文件中,然后使该用户能够嵌入该文件。
我将获得我想要更改的用户的id。所以存储的颜色代码基本上是从,
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文件的用户的id。(使用javascript文件嵌入IFrame )
我应该如何修改我的嵌入代码并从我的数据库中获取自定义变量,以使CSS可根据用户的需要进行自定义?
提前谢谢。
附言:我曾想过在视图(.html.erb文件)中重写CSS,并使用!important以及用户选择的正确的颜色代码,但这种方法并不是非常有效。
发布于 2018-06-05 08:43:47
我认为最好的方法是将脚本文件保存在服务器端,这样您就可以根据用户数据库选项轻松地修改脚本
例如:
在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发送数据到服务器,而无需刷新页面。
在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
操作代码添加到原始操作中,该操作会在页面加载后将页面加载到appy用户样式。
发布于 2018-06-05 12:47:56
我建议您直接在erb文件中使用它,例如
my.html.erb
<html>
<!-- my html -- >
</html>
<style>
<%= my_css.html_safe %>
</style>
https://stackoverflow.com/questions/50689835
复制相似问题