Может быть, вы можете попробовать создать контроллер таблиц стилей:
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 для пользователя.
Это может быть не очень красиво, но я думаю, что это должно работать.