Ruby 在 Rails 根据数据库更改 CSS 中的背景颜色

Ruby on Rails change background colour in CSS according to database

在我的 Ruby on Rails 应用程序中,我试图让用户选择他们的颜色并将其作为网站背景。

在我的模式中我有这个偏好 table:

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;}

但是我不确定如何根据数据库中的颜色更新颜色。

我已尝试遵循此 link:http://blog.hasmanythrough.com/2007/10/18/simpler-than-dirt-restful-dynamic-css 但是我得到了错误:undefined method formatted_colour_path for #<#<Class:0x6daa0a8>:0x6881b98>

在视图中:

在偏好控制器中:

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 logged in"情况)。

如果您尝试更改正文背景颜色,请尝试以下操作:

<body style="background-color: <%= @colour %>">

</body>

但这会给你带来一些后果,你需要更深入:)

这样会更好

<body style="background-color: <%= @colour if @colour %>" >

</body>

或者写一个助手。