1

私は周りを見回しましたが、次のことを可能にするために何をする必要があるかについてのリードを見つけることができません。

この質問は、すべてのモデルコントローラーが正しく機能していて、名前付きCSS属性がデフォルトのスタイルシートで定義されていることを前提としています。

ユーザーがログインするときに、いくつかのCSS属性を選択して、自分のテーマをパーソナライズできるようにしたいと考えています。基本的な属性は、「本体」と「ページラッパー」の色です。(前景)

ユーザーの編集ページでこれらの属性を(フォームから?)選択できるようにしたいと思います。(すでに作成されています)

私がこの仕事をどのように行うことができるか、または正しい方向に良いリードをすることができるかについてのアイデアはありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

1

最善のアプローチは、JavaScriptを使用して、目的のスタイルで頭にスタイルタグを生成することだと思います。Jqueryはそれを行う簡単な方法を提供し、モデルの列にスタイルを格納できます。

このようなもの:

class User
  attr_accesible :styles

view.erb

<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この場合、関係が必要であることを忘れないでください。しかし、それをネストすることはあなた自身をより多くの問題に巻き込みます、私はそれがそれの価値があるとは全く思わない。

于 2012-10-14T03:06:25.927 に答える