RubyonRails根据数据库更改CSS中的背景颜色

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

在我的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.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登录,以及如何正常访问您其中一个页面中的用户首选项?当您说“后果”时,您的意思是我只需验证它吗?是的。如果您打开索引或任何其他页面,而不使用用户和颜色,他可以选择。我会更新答案。