簡體   English   中英

Ruby on Rails中用戶的個人CSS樣式表

[英]User's Personal CSS Stylesheet in Ruby on Rails

我環顧四周,但無法找到實現以下目標所需的方法:

這個問題假設我所有模型控制器都正常工作,並且命名的CSS屬性在默認樣式表中定義。

我希望用戶能夠在登錄時選擇一些CSS屬性來個性化自己的主題。 基本屬性是“正文”和“頁面包裝”顏色。 (前景)

我希望他們能夠在用戶的編輯頁面中選擇這些屬性(從表單?)。 (已創建)

關於如何進行這項工作或在正確的方向上取得良好的領導的任何想法?

謝謝你的幫助。

我認為最好的方法是通過javascript,在頭上生成具有所需樣式的樣式標簽。 jQuery提供了一種簡單的方法,您可以將樣式存儲在模型的列中。

像這樣:

class User
  attr_accesible :styles

視圖

<script>
  // Assume the @styles attr has something like "body { background-color: #567;}"
  $('head').append($('<style>').html('<%= @user.styles %>'))
</script>

@styles將是模型中的另一列,因此您應該在遷移時添加它

rails g migration addstylestousers styles:string

在你的form.erb中

<%= f.label :styles %>
<%= f.text_field :styles %>

我認為,只要您給他足夠的提示,例如“在此字段中添加body { background-color: red }來使背景變成紅色!”,用戶就可以輕松地將css樣式放在此處。

關於序列化,請考慮一下

如果要嵌套樣式,則腳本將是

//Lets say that the user stored on @bgcolor and @fgcolor only css color codes, like '#222' or 'blue'
var bgc = '<%= @user.style.bgcolor %>'
var fgc = '<%= @user.style.fgcolor %>'
var style = 'body { background-color: ' + bgc + '; foreground-color: ' + fgc + ' }'
$('head').append($('<style>').html(style))

請記住,在這種情況下,關系應為User has_one :style 但是,嵌套它會使您陷入更多問題,我認為這根本不值得。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM