0

Rails(およびWeb開発全般)の新機能です。私は、プロジェクトを手伝ってくれるRailsチュートリアルを探していました。私はほとんどすべての私の質問のための解決策を見つけましたが、まだ残っています。Rails:ユーザーがスタイルシートをパーソナライズできるようにするためのチュートリアル

タイトルからわかるように、自分のウェブサイトのユーザーが自分のパーソナルスペースのCSSスタイルシートをパーソナライズできるようにしたいと考えています。 Twitterのような。

誰でも手伝ってもらえますか?それは頼りになるだろう。

ありがとうございます!

EDIT:

わかりましたので、ここでは、これまでのところ(私は工夫を使用しています)私のコードです

#stylesheets_controller.rb 
class StylesheetsController < ApplicationController 

    def user_css 
    if user_signed_in? 
    @user = current_user 
    end 

    respond_to do |format| 
    format.css 
    end 
end 

end 

私の "ダイナミック" CSS:

#user_css.css.erb 
<%= 
    if @user # User log in ? 
    background_color = @user.color_index 
    else 
    background_color = "666" 
    end 
%> 

.cadre { 
    background-color : #<%= background_color %>; 
    height: 50 px; 
    width: 50 px; 
} 

あなたは私に何を伝えることができますこのエラーが発生し、CSSをロードできないため間違っています。

は、HTMLとしてStylesheetsController#1 user_cssにより2011年4月18日午後03時09分07秒0200

処理で

←[1メートル←[36mUser負荷を127.0.0.1のための "/stylesheets/user_css.css" をGET開始しました(2.0ms)←[0メートル←[1mSELECT "ユーザ"。* "ユーザー" WHERE FROM( "ユーザ"。 "ID" = 5)LIMIT 1←[0メートル

127ms

に許容できない406完成

私のファイルのコードが必要な場合は教えてください。

+0

ちょうど頭が上がっています。それに応じてCSSの注入と設計が邪魔になります。 CSSインジェクションの基本的な説明については、[this Rails Guides Atricle](http://guides.rubyonrails.org/security.html#css-injection)を参照してください。 – brettish

答えて

3

たぶん、あなたは、スタイルシートのコントローラを作成してみてください:

class StylesheetsController < ... 
    def per_user # or whatever name you like 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     format.css # I didn't try it, but I guess this should work, please tell me if not 
    end 
    end 
end 

を、これはあなたのテンプレートです:

/* put whatever you want here */ 
#user-<%= @user.id %> { 
    color: #666; 
} 

<%= @user.user_defined_css %> 

そして最後にルート/app/views/stylesheets/per_user.css.erb:

get '/stylesheets/per_user.css' => 'stylesheets#per_user', :as => :per_user_stylesheet 

<%= stylesheet_link_tag per_user_styleseet_path %> 

私はスタイルシートがあまりにも頻繁に変更されないと思います。だから、あなたは結果をより良くキャッシュするでしょう。私は上記のコードを試してみました

=== === UPDATEDは、それが行うことで、

だから、これは私が考えることができる別の方法です.......も働いていませんでした部分的な使用。あなたのレイアウトファイルで

# views/layouts/application.html.erb 
...... 
<head> 
    <%= render :partial => "stylesheets/user_css", :locals => {:user => @user} %> 
</head> 
...... 

そして、あなたの部分は、ユーザーのためにカスタマイズされたCSSが含まれています。

これはあまり美しくないかもしれませんが、これはうまくいくと思います。

+0

元の投稿を更新しました。それをご覧になれますか?どうもありがとう! – Lucas

+0

新しいソリューションが動作しない:{:handbler => [:erb、:rjs、:builder、:rhtml、:rxml]、:formats => [:html]、:locale =>という部分的なスタイルシート/ [:en、:en]}を参照してください。私は "_user_css.css.erb"の名前を変更しましたが、ロードされません。私は_user_css.html.erbに名前を変更しようとしましたが、エラーを表示しません(コンテンツを表示するだけです)。 RailsにCSSの部分を扱わなければならないことを伝える方法はありますか? – Lucas

+0

この場合は、 '_user_css.html.erb'という名前にする必要があります。 '_user_css'の内部では、スタイルタグを埋め込むためのインラインhtmlコードです。 – PeterWong

関連する問題