diff --git a/gem/lib/rails2/lib/view_models/base.rb b/gem/lib/rails2/lib/view_models/base.rb index 4ec97b3..31b2197 100644 --- a/gem/lib/rails2/lib/view_models/base.rb +++ b/gem/lib/rails2/lib/view_models/base.rb @@ -10,6 +10,17 @@ class Base # include ActionController::Helpers + # This is really only needed because some Rails helpers access + # @controller directly. + # It's really bad. + # + # TODO Make it call super. + # + def initialize model, controller_or_view + @model = model + @context = @controller = ContextExtractor.new(controller_or_view).extract + end + class << self # Alias the context_method to the rails-centric controller_method. diff --git a/gem/lib/shared/lib/view_models/base.rb b/gem/lib/shared/lib/view_models/base.rb index 3733f8f..f7ad97c 100644 --- a/gem/lib/shared/lib/view_models/base.rb +++ b/gem/lib/shared/lib/view_models/base.rb @@ -14,6 +14,8 @@ class Base # Create a view_model. To create a view_model, you need to have a model (to present) and a context. # The context is usually a view, a controller, or an app, but doesn't need to be. # + # TODO Include this. + # def initialize model, app_or_controller_or_view @model = model @context = ContextExtractor.new(app_or_controller_or_view).extract diff --git a/rails235/app/view_models/book.rb b/rails235/app/view_models/book.rb index d4ae6ba..2d6c513 100644 --- a/rails235/app/view_models/book.rb +++ b/rails235/app/view_models/book.rb @@ -3,6 +3,11 @@ class ViewModels::Book < ViewModels::Item model_reader :pages def description + # This is to test the url_for helper. + # + # Note: Needed because for example Rails accesses @controller, which shared/base does not provide. + # + url_for self "It has #{pages} pages." end diff --git a/rails235/app/view_models/item.rb b/rails235/app/view_models/item.rb index 4b29d83..82a5c69 100644 --- a/rails235/app/view_models/item.rb +++ b/rails235/app/view_models/item.rb @@ -1,6 +1,8 @@ class ViewModels::Item < ViewModels::Base helper ERB::Util + helper ActionView::Helpers::TagHelper + helper ActionView::Helpers::UrlHelper model_reader :name, :filter_through => :html_escape diff --git a/rails235/config/initializers/view_models_gem.rb b/rails235/config/initializers/view_models_gem.rb index 0cab9f2..dfe2f59 100644 --- a/rails235/config/initializers/view_models_gem.rb +++ b/rails235/config/initializers/view_models_gem.rb @@ -1,3 +1,3 @@ # For development purposes. # -# require File.join(File.dirname(__FILE__), '/../../../gem/init.rb') \ No newline at end of file +require File.join(File.dirname(__FILE__), '/../../../gem/lib/rails2/init.rb') \ No newline at end of file diff --git a/rails235/config/routes.rb b/rails235/config/routes.rb index 107e8be..b612d0b 100644 --- a/rails235/config/routes.rb +++ b/rails235/config/routes.rb @@ -1,6 +1,10 @@ ActionController::Routing::Routes.draw do |map| # The priority is based upon order of creation: first created -> highest priority. - + + map.resource :view_models do |vm| + vm.resource :book + end + # Sample of regular route: # map.connect 'products/:id', :controller => 'catalog', :action => 'view' # Keep in mind you can assign values other than :controller and :action