RubyonRails根据数据库更改CSS中的背景颜色
在我的RubyonRails应用程序中,我试图允许用户选择自己的颜色,并将其作为网站背景 在我的模式中,我有以下首选项表:RubyonRails根据数据库更改CSS中的背景颜色,css,ruby-on-rails,ruby,database,ruby-on-rails-3,Css,Ruby On Rails,Ruby,Database,Ruby On Rails 3,在我的RubyonRails应用程序中,我试图允许用户选择自己的颜色,并将其作为网站背景 在我的模式中,我有以下首选项表: create_table "perferences", force: :cascade do |t| t.integer "user_id" t.integer "category_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.tex
create_table "perferences", force: :cascade do |t|
t.integer "user_id"
t.integer "category_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "colour"
end
CSS背景颜色如下所示:
body{line-height:1;height:100%;width:100%;color:#B2BFCB;background:#002952;text-align:center;font-family:"Apercu Regular", Calibri, sans-serif;font-weight:normal;font-style:normal;margin:0;padding:0;}
但我不确定如何根据数据库中的颜色更新颜色
我尝试了以下链接:
但是我得到了一个错误:未定义的方法格式化了#
他认为:
在性能控制器中:
def show
@colour = Perference.find_by(user_id: session[:user_id]).colour
respond_to do |format|
format.html
format.css
end
end
有人能帮忙吗。我知道我需要从数据库中检索颜色,然后使用它来更新CSS,但我不确定如何做到这一点。CSS文件已修复-您不能将ruby代码放入其中。另一种方法是在application.html.erb中进行内联操作:
<body style="background-color:<%= current_user.preference.color">
</body>
当然,假设用户总是加载在“current_user”变量中(您可以使用一个条件来处理“not logging in”(未登录)情况)。如果您尝试更改正文背景颜色,请尝试以下操作:
<body style="background-color: <%= @colour %>">
</body>
但这会给你带来一些后果,你需要更深入:)
这样做会更好
<body style="background-color: <%= @colour if @colour %>" >
</body>
或者只写一个助手。它是
格式化的用户路径(@user
为什么你会得到格式化的\u color\u path
这个错误,你能发布更多的代码吗对不起,我应该在中添加这一点,请查看更新的问题。你能告诉我怎么做吗。我对Ruby on Rails相当陌生。这可能是我太胖了,但这会产生错误:未定义的局部变量或方法'current\u用户“
您向我们显示了“用户首选项”表,但您如何登录您的用户?使用Desive?我有一个单独的用户表,他们通过bcrypt Gem登录,以及如何正常访问您其中一个页面中的用户首选项?当您说“后果”时,您的意思是我只需验证它吗?是的。如果您打开索引或任何其他页面,而不使用用户和颜色,他可以选择。我会更新答案。