[LRUG] Proffer and introducing constraints to Rails

Arek Turlewicz quirek at gmail.com
Thu Apr 5 02:01:55 PDT 2012


On 05/04/12 15:59, Andrew Stewart wrote:
> On 4 Apr 2012, at 23:58, mudge wrote:
>
>> Perhaps if we could
>> simplify the view part to simply be:
>>
>> 1. Take some state;
>> 2. Return a string.
>>
>> Then views and helpers would be practically the same thing and we
>> could tackle some of these problems more easily.
> I think Mustache goes some way towards this:
>
>    https://github.com/defunkt/mustache
>
Interesting. btw. I think I try to do something similar using what, we 
already got in Rails like erb templates and by adding simple Widget 
(View) class.
My goal is to be able to see structure of the page directly in the ruby 
code like this:

def build_page
     nav_bar = Widget.new("navigation_bar") do |nav_bar|
       nav_bar << Container.new(:menu) do |menu|
         menu << Widget.new("link", :label=> "Product list", :target => 
"/products")
         menu << Widget.new("link", :label=> "About", :target => "/about")
       end
       nav_bar << Widget.new("search_field")
     end

     column_left = Container.new(:column_left) do |column_grid|
       column_grid << ProductView.new(@product) if @product
       column_grid << ProductListView.new(@products) if @products
       column_grid << Container.new('picture_row') do |picture_row|
         picture_row << Widget.new("sample_picture")
         picture_row << Widget.new("sample_picture")
         picture_row << Widget.new("sample_picture")
       end
     end

     column_right = Container.new(:column_right) do |column_grid|
       column_grid << Widget.new("sample_picture")
       column_grid << Widget.new("sample_picture")
       column_grid << Widget.new("sample_picture")
     end

     row_container = Container.new(:row_container) do |row_container|
       row_container << column_left
       row_container << column_right
     end

     @page = ::WebPage.build do |p|
       p << nav_bar
       p << row_container
       p << Container.new(:footer)
     end
end

Then I can call @page.render to generate page. I still use html.erb 
templates to render single widgets.
So this extra layer is mostly as a design plan for programmer.

Example that use bootstrap is here:
https://github.com/arekt/rendering_view

Everything is in very early stage, but example works, so it could be 
useful for someone.

cheers,
Arek Turlewicz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lrug.org/pipermail/chat-lrug.org/attachments/20120405/60f46095/attachment-0003.html>


More information about the Chat mailing list