I (a Rails newbie) am trying to understand how CSS works in Rails, relying 
on guidance from http://guides.rubyonrails.org/configuring.html.  I'm 
getting some surprising, perplexing, and unwelcome results, regarding how 
the CSS settings cascade to different views.

To follow the story, see numbered screen shots at 
https://drive.google.com/file/d/0B-thboqjuKZTeVI3R0tPbGhPVjQ/view?usp=sharing
:

1. Here's the legend for all the screen shots: This app has two models, 
users and toys.  The views and other Rails objects for both models have 
been generated using scaffold.  On each screen, the top window shows 
scaffolds.scss; below that on the left is users.scss; at the right of that 
is toys.scss; at lower left is the users object list; and at lower right is 
the toys object list.  This screen shows the unmodified versions of all 
this.  The screen backgrounds are both white, following the CSS in 
scaffolds.scss.  *Thru all these screens, the variable to watch is the 
background color.*

2. I modified (and saved) users.scss to make a yellow background, and I 
refreshed the pages at the bottom.  Here came the first surprise:  I 
expected the users background to turn yellow and the toys background to 
remain white.  In other words, I assumed that the scope of the users.scss 
setting would be just the users pages, and that the toys pages would 
continue to inherit the (unmodified) white background from scaffolds.scss.

3. I modified (and saved) toys.scss to make a yellow background, and I 
refreshed the pages at the bottom.  I was hoping that the toys screen would 
turn green and the users screen would stay yellow.  Nothing changed.  So it 
seems that the users CSS overrides the toys CSS, tho I have no idea how 
this precedence got established.

4. THis is further confirmed when I change the users CSS, and it applies to 
both.

5. When I remove the users CSS color specification, both screens now follow 
the toys CSS.  This too is weird; why doesn't one or both of these screens 
inherit the scaffold.scss setting?

6-7.  A couple more experiments confirm that (a) If the CSS attribute for 
any model is set, that setting applies to all models in the application 
(rather than just to that model); and (b) among the models in an app, there 
is some kind of precedence ordering that determines which model's setting 
of a given CSS attribute applies to all models.

Clearly, there is a bug here.  Whether the bug is in in the machinery of 
Rails or in my understanding of it, I can't tell.  What I would like to 
know is, how (or where) to set CSS attributes so they apply to the displays 
of just one model.

~ Thanks, Ken



-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/dfc8327c-3a55-46b5-9c3f-b71064b888fd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to