Rails: учебные пособия о том, как позволить пользователям персонализировать свои таблицы стилей - PullRequest
1 голос
/ 14 апреля 2011

Я новичок в Rails (и веб-разработке в целом).Я искал учебники по Rails, которые могли бы помочь мне пройти через проект.Я нашел решение почти для всех моих вопросов, но один все еще остается.

Как следует из названия, я хочу, чтобы пользователи моего сайта могли персонализировать свои таблицы стилей CSS для своего личного пространства.Твиттер, как.

Кто-нибудь может мне помочь?Это было бы неприятно.

Спасибо!

РЕДАКТИРОВАТЬ:

Хорошо, так вот мой код (я использую Devise)

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

Запустил GET "/stylesheets/user_css.css" для 127.0.0.1 в 2011-04-18 15:09:07 + 0200

Обработка StylesheetsController # user_css как HTML

← [1 м ←[36mUser Load (2.0ms) ← [0m ← [1mSELECT "users". * FROM "users" WHERE ("users". "Id" = 5) LIMIT 1 ← [0m

Завершено 406 Недопустимо в127мс

Если вам нужен код из любого из моих файлов, пожалуйста, сообщите мне.

1 Ответ

3 голосов
/ 14 апреля 2011

Может быть, вы можете попробовать создать контроллер таблиц стилей:

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 для пользователя.

Это может быть не очень красиво, но я думаю, что это должно работать.

...