Hi Everyone, this is my first post on Ruby on Rails, I’ve managed to get
up
and running with Rails 4.1 on FreeBSD with Nginx and Ruby 2.1.1.
My issue is this:
I have a folder located at /public/swf/ that contains numerous swf files
I
want to load as a background for every page of my site. I’ve
successfully
created a controller with a randomize method and a corresponding view
that
loads the backgrounds randomly. The problem I’m having a bit of trouble
with now is getting the output of /background/randomize.html.erb and
putting that output into the application layout so the backgrounds load
on
every page. My HTML/CSS is just fine, however I can’t seem to include
that
in the application view.
Would I be using the render method, content_for, or capture do for
taking
the raw parsed HTML output of background/randomize and putting it in the
application layout?
On Saturday, April 26, 2014 2:45:58 PM UTC-4, Kazuna Nakama wrote:
with now is getting the output of /background/randomize.html.erb and
putting that output into the application layout so the backgrounds load on
every page. My HTML/CSS is just fine, however I can’t seem to include that
in the application view.
Would I be using the render method, content_for, or capture do for taking
the raw parsed HTML output of background/randomize and putting it in the
application layout?
I would rename randomize.html.erb as a partial and render it in the
application layout. If you haven’t worked with partials, refer to the
following:
mike
Thanks! So I renamed /views/background/randomize.html.erb to
/views/background/_randomize.html.erb and changed the method name in the
background controller to _randomize as well. I put <%= render :partial
=>
“background/_randomize” %> in application.html.erb.
Some things work, some things don’t. So my randomize method simply sets
@swf_bg to a random file in the public folder and then I put <%= @swf_bg
%>
in the _randomize.html.erb view. This is displayed properly when I go to
/background/_randomize.html.erb, but when I go to the index of my site
it’s
not including the @swf_bg variable that displays correctly when I go to
/background/_randomize
it’s including the code from _randomize.hml.erb in my main page like:
instead of , but
when
I visit /background/_randomize in my browser it works fine.
2014年4月27日日曜日 15時59分57秒 UTC-5 mike2r:
On Wednesday, April 30, 2014 11:46:50 AM UTC-4, Kazuna Nakama wrote:
not including the @swf_bg variable that displays correctly when I go to
On Saturday, April 26, 2014 2:45:58 PM UTC-4, Kazuna Nakama wrote:
with now is getting the output of /background/randomize.html.erb and
I would rename randomize.html.erb as a partial and render it in the
application layout. If you haven’t worked with partials, refer to the
following:
Layouts and Rendering in Rails — Ruby on Rails Guides
mike
I probably should have anticipated that would be an issue. Partials are
not templates, in fact, they are presumed to execute in the same
controller/action as the template that calls them. They don’t have
their
own corresponding actions.
I would have to test this, but I would probably define randomize as a
protected method in the applications controller (and thus, would be
inherited by all other controllers). I would then execute it as a
before_action for those controller/actions that need it. I’d be
interested
in other suggestions on handling this. I’m not positive this would
work,
but I think that this would then work in the context of your partial.
Mike