non-invasive templating solutions in ruby?

Discussion in 'Ruby' started by Terrence Brannon, Jan 26, 2009.

  1. hello, I am a perl and python programmer, but for completeness, I
    would like to know which dynamic html generation systems exist in Ruby
    which focus on driving HTML generation outside of the HTML itself.

    In an 'invasive' system, you would see presentation logic directly in
    the HTML, for example:

    [% IF age < 10 %]
    Hello [% name %], does your mother know you're
    using her AOL account?
    [% ELSIF age < 18 %]
    Sorry, you're not old enough to enter
    (and too dumb to lie about your age)
    [% ELSE %]
    Welcome [% name %].
    [% END %]

    whereas in a 'non-invasive' system there would only be HTML with id or
    class tags

    <span id="age_dialog">
    <span id="under10">
    Hello, does your mother know you're
    using her AOL account?
    </span>
    <span id="under18">
    Sorry, you're not old enough to enter
    (and too dumb to lie about your age)
    </span>
    <span id="welcome">
    Welcome
    </span>
    </span>

    and then you would simply remove the parts of the HTML based on age:

    $age->retain('under10') if $age < 10;


    My list of non-invasive (aka push-style) templating systems is
    maintained here
    <http://perlmonks.org/?node_id=674225>

    Thanks for your feedback,
    terrence
    Terrence Brannon, Jan 26, 2009
    #1
    1. Advertising

  2. Terrence Brannon

    Phlip Guest

    Terrence Brannon wrote:

    > hello, I am a perl and python programmer,


    Hello, I'm a programmer!

    > but for completeness, I
    > would like to know which dynamic html generation systems exist in Ruby
    > which focus on driving HTML generation outside of the HTML itself.


    > [% ELSE %]
    > Welcome [% name %].
    > [% END %]


    Everyone uses eRB there. Except those who use HAML, or certain other systems,
    such as Builder::XmlMarkup.

    > whereas in a 'non-invasive' system there would only be HTML with id or
    > class tags
    >
    > <span id="age_dialog">
    > <span id="under10">


    Look up 'lilu templates'. They hook into your Rails views, and use Hpricot's CSS
    selectors to search and replace HTML details before they go out.

    > $age->retain('under10') if $age < 10;


    Exactly - some similar detail in an 'instruction' file.
    Phlip, Jan 26, 2009
    #2
    1. Advertising

  3. On Jan 26, 3:06 pm, Phlip <> wrote:

    >
    > Look up 'lilu templates'. They hook into your Rails views, and use Hpricot's CSS
    > selectors to search and replace HTML details before they go out.
    >
    > > $age->retain('under10') if $age < 10;

    >


    yes their mailing list seems dead - http://groups.google.com/group/lilu-templates

    but I found kwartz and amrita, so I added those.

    Thanks.
    Terrence Brannon, Jan 26, 2009
    #3
  4. Terrence Brannon, Jan 26, 2009
    #4
  5. Terrence Brannon wrote:
    > whereas in a 'non-invasive' system there would only be HTML with id or
    > class tags
    >
    > <span id="age_dialog">
    > <span id="under10">
    > Hello, does your mother know you're
    > using her AOL account?
    > </span>
    > <span id="under18">
    > Sorry, you're not old enough to enter
    > (and too dumb to lie about your age)
    > </span>
    > <span id="welcome">
    > Welcome
    > </span>
    > </span>
    >
    > and then you would simply remove the parts of the HTML based on age:
    >
    > $age->retain('under10') if $age < 10;


    Amrita works like that. I haven't used it for a long time, and it
    doesn't appear to have been updated since 2003, but it worked fine then
    :)

    Another option is to do the template insertion client-side in
    Javascript. For example, Rails Javascript helpers can write the
    Javascript for you dynamically and send it straight to the client:

    render :update do |page|
    page.remove_html 'under18'
    page.remove_html 'welcome'
    end

    (It uses Prototype by default, but by installing jRails then the same
    Ruby code will generate jQuery javascript instead)

    The attraction of this approach is that Ajax updates work the same way,
    and it's a stepping-stone towards making a richer Javascript interface
    if you want to go that way.
    --
    Posted via http://www.ruby-forum.com/.
    Brian Candler, Jan 26, 2009
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Chad A. Beckner
    Replies:
    0
    Views:
    408
    Chad A. Beckner
    May 27, 2004
  2. Replies:
    13
    Views:
    583
    Sybren Stuvel
    May 2, 2006
  3. Martjack Ecommerce
    Replies:
    0
    Views:
    518
    Martjack Ecommerce
    Dec 22, 2009
  4. Cal Who
    Replies:
    0
    Views:
    456
    Cal Who
    Jun 9, 2010
  5. Trans
    Replies:
    13
    Views:
    177
    Louis J Scoras
    Dec 8, 2006
Loading...

Share This Page