Hi Gurus, I''m learning the Rails framework, and I have this exact block of html/javascript in two places in an if/else construct in application.html.erb: <body onload="Modalbox.show(''<div class=\''warning\''> <p> <center> <%flash[ :notice ] %> </center> </p> <p> <center> <input type=\''button\'' value=\''OK\'' onclick=\''Modalbox.hide()\''/> </center> </p> </div>'', { title: this.title, width: 300 } );"> Trying to be DRY, I''d like to put that html/javascript somewhere once, and call it from within application.html.erb. What''s the best place to put it, and how do I call it from application.html.erb? TIA, Craig
The best place to put helper methods for views is in... well... helpers. In this case, in helpers/application_helper.rb If you are using layouts, it''s probable you''re using a variant of <body><%= yield %></body>, in which case it would be messy to change the declaration for the inline javascript. I''d suggest adding it as a javascript code in the header of the templates that need to use it. Just add a <%= yield :extra_headers %> declaration in the header of your layout if not already doing so. Seems you are using prototype, Event.observe($$(''body''), ''load'', function() { Modalbox.show(...) }); will do the trick On Aug 26, 7:04 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi Gurus, I''m learning the Rails framework, and I have this exact > block of html/javascript in two places in an if/else construct in > application.html.erb: > > <body onload="Modalbox.show(''<div class=\''warning\''> <p> <center> <%> flash[ :notice ] %> </center> </p> <p> <center> <input type=\''button\'' > value=\''OK\'' onclick=\''Modalbox.hide()\''/> </center> </p> </div>'', > { title: this.title, width: 300 } );"> > > Trying to be DRY, I''d like to put that html/javascript somewhere once, > and call it from within application.html.erb. What''s the best place > to put it, and how do I call it from application.html.erb? > > TIA, > Craig
Thanks super. It occurred to me that I have this in the wrong place-- I should have it in the template where the user logs in. Which brings me to another noob question: Under javascript, I''d do something like <a href="#" class="demo-btn" title="JavaScript Object demo" onclick="Modalbox.show(node, {title: this.title, width: 300, afterLoad: setObservers, onHide: removeObservers }); return false;">Click here</a> In my sessions controller I have <%= submit_tag ''Log in'' %> What''s the proper syntax to mix in the javascript call into the submit_tag? *Many* TIA, Craig On Aug 26, 8:20 am, Ruben Medellín <chub...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> The best place to put helper methods for views is in... well... > helpers. In this case, in helpers/application_helper.rb > > If you are using layouts, it''s probable you''re using a variant of > <body><%= yield %></body>, in which case it would be messy to change > the declaration for the inline javascript. I''d suggest adding it as a > javascript code in the header of the templates that need to use it. > Just add a <%= yield :extra_headers %> declaration in the header of > your layout if not already doing so. > Seems you are using prototype, > > Event.observe($$(''body''), ''load'', function() { > Modalbox.show(...) > > }); > > will do the trick > > On Aug 26, 7:04 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Hi Gurus, I''m learning the Rails framework, and I have this exact > > block of html/javascript in two places in an if/else construct in > > application.html.erb: > > > <body onload="Modalbox.show(''<div class=\''warning\''> <p> <center> <%> > flash[ :notice ] %> </center> </p> <p> <center> <input type=\''button\'' > > value=\''OK\'' onclick=\''Modalbox.hide()\''/> </center> </p> </div>'', > > { title: this.title, width: 300 } );"> > > > Trying to be DRY, I''d like to put that html/javascript somewhere once, > > and call it from within application.html.erb. What''s the best place > > to put it, and how do I call it from application.html.erb? > > > TIA, > > Craig
Oops, meant to say "In my sessions view I have..." On Aug 26, 10:48 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Thanks super. It occurred to me that I have this in the wrong place-- > I should have it in the template where the user logs in. Which brings > me to another noob question: > > Under javascript, I''d do something like > > <a href="#" class="demo-btn" title="JavaScript Object demo" > onclick="Modalbox.show(node, {title: this.title, width: 300, > afterLoad: setObservers, onHide: removeObservers }); return > false;">Click here</a> > > In my sessions controller I have > > <%= submit_tag ''Log in'' %> > > What''s the proper syntax to mix in the javascript call into the > submit_tag? > > *Many* TIA, > Craig > > On Aug 26, 8:20 am, Ruben Medellín <chub...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > The best place to put helper methods for views is in... well... > > helpers. In this case, in helpers/application_helper.rb > > > If you are using layouts, it''s probable you''re using a variant of > > <body><%= yield %></body>, in which case it would be messy to change > > the declaration for the inline javascript. I''d suggest adding it as a > > javascript code in the header of the templates that need to use it. > > Just add a <%= yield :extra_headers %> declaration in the header of > > your layout if not already doing so. > > Seems you are using prototype, > > > Event.observe($$(''body''), ''load'', function() { > > Modalbox.show(...) > > > }); > > > will do the trick > > > On Aug 26, 7:04 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Hi Gurus, I''m learning the Rails framework, and I have this exact > > > block of html/javascript in two places in an if/else construct in > > > application.html.erb: > > > > <body onload="Modalbox.show(''<div class=\''warning\''> <p> <center> <%> > > flash[ :notice ] %> </center> </p> <p> <center> <input type=\''button\'' > > > value=\''OK\'' onclick=\''Modalbox.hide()\''/> </center> </p> </div>'', > > > { title: this.title, width: 300 } );"> > > > > Trying to be DRY, I''d like to put that html/javascript somewhere once, > > > and call it from within application.html.erb. What''s the best place > > > to put it, and how do I call it from application.html.erb? > > > > TIA, > > > Craig
The API documentation will help with these. Bookmark http://api.rubyonrails.org http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#M001739 On Aug 26, 8:50 pm, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Oops, meant to say "In my sessions view I have..." > > On Aug 26, 10:48 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > Thanks super. It occurred to me that I have this in the wrong place-- > > I should have it in the template where the user logs in. Which brings > > me to another noob question: > > > Under javascript, I''d do something like > > > <a href="#" class="demo-btn" title="JavaScript Object demo" > > onclick="Modalbox.show(node, {title: this.title, width: 300, > > afterLoad: setObservers, onHide: removeObservers }); return > > false;">Click here</a> > > > In my sessions controller I have > > > <%= submit_tag ''Log in'' %> > > > What''s the proper syntax to mix in the javascript call into the > > submit_tag? > > > *Many* TIA, > > Craig > > > On Aug 26, 8:20 am, Ruben Medellín <chub...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > The best place to put helper methods for views is in... well... > > > helpers. In this case, in helpers/application_helper.rb > > > > If you are using layouts, it''s probable you''re using a variant of > > > <body><%= yield %></body>, in which case it would be messy to change > > > the declaration for the inline javascript. I''d suggest adding it as a > > > javascript code in the header of the templates that need to use it. > > > Just add a <%= yield :extra_headers %> declaration in the header of > > > your layout if not already doing so. > > > Seems you are using prototype, > > > > Event.observe($$(''body''), ''load'', function() { > > > Modalbox.show(...) > > > > }); > > > > will do the trick > > > > On Aug 26, 7:04 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > Hi Gurus, I''m learning the Rails framework, and I have this exact > > > > block of html/javascript in two places in an if/else construct in > > > > application.html.erb: > > > > > <body onload="Modalbox.show(''<div class=\''warning\''> <p> <center> <%> > > > flash[ :notice ] %> </center> </p> <p> <center> <input type=\''button\'' > > > > value=\''OK\'' onclick=\''Modalbox.hide()\''/> </center> </p> </div>'', > > > > { title: this.title, width: 300 } );"> > > > > > Trying to be DRY, I''d like to put that html/javascript somewhere once, > > > > and call it from within application.html.erb. What''s the best place > > > > to put it, and how do I call it from application.html.erb? > > > > > TIA, > > > > Craig
Thanks super. I''m still getting used to this framework, which includes figuring out where and how it''s documented :) On Aug 27, 3:58 am, Mukund <marut...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote:> The API documentation will help with these. Bookmarkhttp://api.rubyonrails.org > > http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.h... > > On Aug 26, 8:50 pm, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Oops, meant to say "In my sessions view I have..." > > > On Aug 26, 10:48 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Thanks super. It occurred to me that I have this in the wrong place-- > > > I should have it in the template where the user logs in. Which brings > > > me to another noob question: > > > > Under javascript, I''d do something like > > > > <a href="#" class="demo-btn" title="JavaScript Object demo" > > > onclick="Modalbox.show(node, {title: this.title, width: 300, > > > afterLoad: setObservers, onHide: removeObservers }); return > > > false;">Click here</a> > > > > In my sessions controller I have > > > > <%= submit_tag ''Log in'' %> > > > > What''s the proper syntax to mix in the javascript call into the > > > submit_tag? > > > > *Many* TIA, > > > Craig > > > > On Aug 26, 8:20 am, Ruben Medellín <chub...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > The best place to put helper methods for views is in... well... > > > > helpers. In this case, in helpers/application_helper.rb > > > > > If you are using layouts, it''s probable you''re using a variant of > > > > <body><%= yield %></body>, in which case it would be messy to change > > > > the declaration for the inline javascript. I''d suggest adding it as a > > > > javascript code in the header of the templates that need to use it. > > > > Just add a <%= yield :extra_headers %> declaration in the header of > > > > your layout if not already doing so. > > > > Seems you are using prototype, > > > > > Event.observe($$(''body''), ''load'', function() { > > > > Modalbox.show(...) > > > > > }); > > > > > will do the trick > > > > > On Aug 26, 7:04 am, Dudebot <craign...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > Hi Gurus, I''m learning the Rails framework, and I have this exact > > > > > block of html/javascript in two places in an if/else construct in > > > > > application.html.erb: > > > > > > <body onload="Modalbox.show(''<div class=\''warning\''> <p> <center> <%> > > > > flash[ :notice ] %> </center> </p> <p> <center> <input type=\''button\'' > > > > > value=\''OK\'' onclick=\''Modalbox.hide()\''/> </center> </p> </div>'', > > > > > { title: this.title, width: 300 } );"> > > > > > > Trying to be DRY, I''d like to put that html/javascript somewhere once, > > > > > and call it from within application.html.erb. What''s the best place > > > > > to put it, and how do I call it from application.html.erb? > > > > > > TIA, > > > > > Craig