我希望用户能够上传图片以用作其个人资料背景(用户#显示)。查看具有该功能的某些网站(例如Twitter)的源代码,似乎为用户分配了一个html正文标记,并且该正文标记的相应CSS背景图像链接到了他们上传的图像。用户上传的背景?
任何想法,我可以做到这一点? (注意:我目前使用回形针进行图片上传,但会将其与Amazon S3 /类似服务集成)
我想过从我的用户控制器向CSS文件/脚本注入一个ruby实例变量,以便它将是动态的,但我不知道这是否可能。可能有更好的方法。
我希望用户能够上传图片以用作其个人资料背景(用户#显示)。查看具有该功能的某些网站(例如Twitter)的源代码,似乎为用户分配了一个html正文标记,并且该正文标记的相应CSS背景图像链接到了他们上传的图像。用户上传的背景?
任何想法,我可以做到这一点? (注意:我目前使用回形针进行图片上传,但会将其与Amazon S3 /类似服务集成)
我想过从我的用户控制器向CSS文件/脚本注入一个ruby实例变量,以便它将是动态的,但我不知道这是否可能。可能有更好的方法。
我已实施项目中的类似的东西。我将阐述这个概念并给出一个代码示例。我会让你理解逻辑或者采取一些代码示例来适应你的系统实现。
我会用这个帮手。
在应用程序/视图/布局/ application.html.erb
<head>
...
</head>
<body style="<%= show_user_bg %>">
...
</body>
在应用程序/佣工/ application_helper.rb
module ApplicationHelper
def show_user_bg
"background:transparent url(#{@user.background_image}) no-repeat fixed left top;"
end
end
只要确保你的用户模型有background_image列和这个设置。
使用助手使其更加动态和更清洁。例如,您可以投入条件:
module ApplicationHelper
def show_user_bg
# Show user background
if user_signed_in?
"background:transparent url(#{@user.background_image}) no-repeat fixed left top;"
# Otherwise, show a default background image
else
"background:transparent url('/images/default_bg.png') no-repeat fixed left top;"
end
end
end
希望有所帮助!
有很多种方法可以做到这一点。我见过谷歌搜索页面。它在html主体的底部添加了一个图像标签,其绝对位置为0,0,并将索引设置为-2。
另一种方法是,在身体和你的主div的背景图片,你可以做到这一点使用内联CSS属性像
<body style="background-image: 'url(<%= user_image -%>)'">
其中user_image是计算的背景图像的URL为当前用户的一个辅助方法,这应该也处理默认图像,即如果用户没有选择任何图像,那么它应该返回一个默认图像,可能是一个透明的图像。
由于它与数据相关,因此我只是在视图中使用内嵌式样式。
假设控制器已经加载模型实例为@profile
有叫background_image
,回形针附件属性...
<body style="background-image:url(<%= @profile.background_image.url %>)">
...
</body>
非常感谢您的帮助!工作完美,有没有什么办法可以为用户页面设置默认背景?没有任何背景图片上传用户配置文件的背景为白色,但对于所有其他页面,您的“其他”页面会出现,并且会出现默认背景 – ahuang7 2011-04-15 01:39:04
在帮助程序中,您可以添加其他条件以检查@ user.background_image.blank?如果是,则显示默认背景图像。试一试 :-) – 2011-04-15 06:42:41