我是Rails的新手(以及一般的Web开发)。我一直在寻找可以帮助我完成项目的Rails教程。我找到了几乎所有问题的解决方案,但仍有一个问题。
正如标题所示,我想让我的网站用户为他们的个人空间个性化他们的css样式表。 Twitter喜欢。
任何人都可以帮助我吗?那太可靠了。
谢谢!
编辑:
好的,所以这是我的代码到目前为止(我正在使用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:
在2011-04-18 15:09:07 +0200
开始获取127.0.0.1的“/stylesheets/user_css.css”由StylesheetsController#user_css处理为HTML
←[1m←[36mUser Load(2.0ms)←[0m←[1mSELECT“users”。* FROM“users”WHERE(“users”。“id”= 5)LIMIT 1←[0m
已完成406在127毫秒内无法接受
如果您需要我的任何文件中的代码,请告诉我。
答案 0 :(得分: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 %>
我猜样式表不会变得太频繁。所以你最好缓存结果。
===更新===
我已经尝试了上面的代码,它也没有工作.......
所以这是我能想到的另一种方式,通过使用partial。
在你的布局文件中:
# views/layouts/application.html.erb
......
<head>
<%= render :partial => "stylesheets/user_css", :locals => {:user => @user} %>
</head>
......
您的部分包含用户的自定义css。
这可能不是很漂亮,但我认为这应该有效。