2011-04-14 53 views
0

我是Rails(和一般的Web開發)的新手。我一直在尋找可以幫助我完成項目的Rails教程。我已經找到了幾乎所有問題的解決方案,但仍然存在。Rails:關於如何讓用戶個性化他們的樣式表的教程

正如標題所示,我想讓我的網站的用戶能夠爲他們的個人空間個性化他們的CSS樣式表。 Twitter喜歡。

任何人都可以幫助我嗎?這將是令人擔憂的。

謝謝!

編輯:

好了,所以這是我到目前爲止的代碼(我使用設計)

#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:

發起者StylesheetsController#user_css GET爲127.0.0.1 「/stylesheets/user_css.css」 在2011-04-18 15時09分07秒0200

處理作爲HTML

←[1米←[36mUser負載(2.0ms)←[0米←[1mSELECT 「用戶」。* FROM 「用戶」 WHERE( 「用戶」, 「ID」= 5)LIMIT 1←[0米

完成406不可接受在127ms

如果您需要我的任何文件的代碼,請告訴我。

+0

只是一個頭腦:隨心所欲的CSS注入和設計。請參閱[本Rails指南Atricle](http://guides.rubyonrails.org/security.html#css-injection)以獲取有關CSS注入的基本介紹。 – brettish 2011-04-14 16:14:59

回答

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 

這是您的模板:/app/views/stylesheets/per_user.css.erb

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

<%= @user.user_defined_css %> 

最後的路線:

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

<%= stylesheet_link_tag per_user_styleseet_path %> 

我想樣式表不會變得太頻繁。所以你會更好地緩存結果。

===修訂===

我已經嘗試了上面的代碼,它是不是也工作.......

因此,這是另一種方式,我能想到的,通過使使用部分。

在您的佈局文件:

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

而且你的部分包含了用戶自定義CSS。

這可能不是很漂亮,但我認爲這應該工作。

+0

我已經更新了我原來的帖子,你可以看看它嗎?非常感謝! – Lucas 2011-04-18 13:26:12

+0

您的新解決方案不起作用:使用{:handlers => [:erb,:rjs,:builder,:rhtml,:rxml],:formats => [:html],:locale =>缺少部分樣式表/ user_css [:en,:en]}在視圖路徑中。我已經重命名了我的「_user_css.css.erb」,但它不會加載它。我試着將它重命名爲_user_css.html.erb,然後它不會給出錯誤(只顯示內容)。任何告訴Rails的方法,他必須處理CSS部分? – Lucas 2011-04-19 07:06:58

+0

在這種情況下,您應該將其命名爲_user_css.html.erb。注意'_user_css'內部,它只是嵌入式樣標籤的嵌入式html代碼。 – PeterWong 2011-04-19 07:51:17

相關問題