That's kind of interesting.  I agree that actions seem more like  
objects than methods sometimes, but here you have them done up as  
classes, not objects.  I think the number of classes involved in this  
approach might be a bit much.  Gets me thinking though.  I'll see if  
I can apply some gray matter to the problem in the next day or two...


On Sep 20, 2007, at 11:13 AM, ry dahl wrote:

> For example,
>
> module Controllers::Products
>   class Index < GetAction
>     def initialize(params)
>       @products = Product.paginate(params[:page] || 1)
>     end
>
>     def response_json
>       @products.to_json
>     end
>
>     def response_html
>       render 'products/index.erb'
>     end
>   end
>
>   class Show < GetAction
>     extra_route ':id'
>
>     def initialize(params)
>       @products = Product.find(params[:id])
>     end
>
>     def response_html
>       render 'products/show.erb'
>     end
>   end
> end
>
> <%= link_to 'Products', Controllers::Products::Index.url %>
>
>
> On 9/20/07, ry dahl <[EMAIL PROTECTED]> wrote:
>> Sometimes it seems like actions deserve to be their own objects: we
>> map routes to them, we'd like to know what parameters they expect, we
>> want to say which http methods they accept, we assign them
>> before/after filters, and we even hold collections of them
>> (Controller.callable_actions). This responds_to issue is another
>> example of how we'd like to treat actions as objects. We would like
>> for the controller to look at the request, determine which format to
>> send, and then simply call my_action.render_json or
>> my_action.render_html. Simultaneously, our controllers are not very
>> class like. They are basically instantiate them only to call the
>> action. Changing the Controller class into a module would not be so
>> hard in the current Merb - they are (more or less) just containers  
>> for
>> actions.
>>
>> Has anyone else been having these thoughts?
>>
>> ry
>

--
Josh Susser
http://blog.hasmanythrough.com


_______________________________________________
Merb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/merb-devel

Reply via email to