2017-02-14 3 views
0

Wir haben mehrere Organisationen mit jeweils einer .show.html.erb-Seite. Wir möchten Organisationen ermöglichen, die Farbe ihrer Seite anzupassen.Farbe für jede Show-Seite anpassen - Ruby auf Schienen

In unserem Schema haben wir:

create_table "organizations", force: :cascade do |t| 
    t.string "theme" 
end 

Ich habe versucht, das Hinzufügen der folgenden unseren 'Layouts/application.html.erb' Seite diese Anpassung zu ermöglichen (funktioniert lokal, aber nicht in Produktion):

<style media="screen"> 
    .theme { 
    background: #<%= @organization.theme %> !important; 
    } 
</style> 

Ich bin ziemlich neu bei Rails ... denke ich überhaupt richtig darüber nach? Hat jemand Ideen für eine bessere Umsetzung?

Antwort

2

Sie möchten wahrscheinlich einen yield Block, um dies zu erreichen.

In layouts/application.html.erb:

<style media="screen"> 
    .theme { 
    background: #<%= content_for?(:theme) ? yield(:theme) : default_theme %> !important; 
    } 
</style> 

In jeder Ansicht:

<% content_for :theme, @organization.theme %> 

Lesen Sie die Dokumentation des Verstehens yield: http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

Mehr auf content_for: http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for

Verwandte Themen