After many failed attempts of trying to find a modal window that worked like facebox and used prototype, I gave up and started to write one from scratch. In the process I found the made by . It wasn’t perfect but it was enough for me to build off of so with a few tweaks I was able to allow window resizing and let the box center itself. You can view the changes on my .
Screenshot:
My Version of Facebox in our timetracker application
We are currently working on a project that involves Flex and active resource + will_paginate and we needed to be able to paginate the xml transactions easily. Unfortunately, will_paginate and to_xml don’t play nicely when it comes to adding the current_page, total_pages, and page attributes to the xml. After many failed attempts I went looking around and found in a few of that some people had solved this problem but, I didn’t want to install another version of the gem to risk breaking other apps on the server so I did it the rails way!
I started by creating a module that opens up the will_paginate class and includes ActiveResource and alias method chain the to_xml method to include these values. Example code below.
#enviroment.rb
...
require'to_xml_extensions'
#lib/to_xml_extensions.rbmodule WillPaginateHelpers
includeActiveSupport::CoreExtensions::Array::Conversions
def to_xml_with_collection_type(options = {})
serializeable_collection.to_xml_without_collection_type(options)do|xml|
xml.tag!(:current_page, {:type =>ActiveSupport::CoreExtensions::Hash::Conversions::XML_TYPE_NAMES[current_page.class.name]}, current_page)
xml.tag!(:per_page, {:type =>ActiveSupport::CoreExtensions::Hash::Conversions::XML_TYPE_NAMES[per_page.class.name]}, per_page)
xml.tag!(:total_entries, {:type =>ActiveSupport::CoreExtensions::Hash::Conversions::XML_TYPE_NAMES[total_entries.class.name]}, total_entries)end.sub(%{type="array"}, %{type="collection"})end
alias_method_chain :to_xml, :collection_typedef serializeable_collection #:nodoc:# Ugly hack because to_xml will not yield the XML Builder object when empty?
empty? ? returning(self.clone){|c| c.instance_eval{|i|def empty?; false; end}} : selfendendWillPaginate::Collection.send(:include, WillPaginateHelpers)
This now gives me the proper xml when I call to_xml
I encountered an error in rails trying to create a nested route in rails 2.x
map.import_time_cards 'users/:user_id/time_cards/import',
:controller => 'time_cards',
:action => 'import'
Wasn’t setting up a route for users because this route was being setup automatically and overwritten by:
map.resources :users,
:has_many => [:notes, :addresses, :expenses, :time_cards] ,
:collection => [:login, :logout, :disable, :enable]
So after digging around on the rails I discovered that map.resources takes a block so my solution to this problem was :
map.resources(:users,
:has_many => [:notes, :addresses, :expenses] ,
:collection => [:login, :logout, :disable, :enable]) do |user|
user.resources :time_cards, :collection => [:import]
end
By using a block this tells rails to include route to ‘users/1/time_cards/import’ instead of appending import as the id for the show route.
Welcome to ! We’ve hired Scott as an intern for the summer and hopefully longer. Scott is a fast learner, highly motivated, has a positive attitude and should be a great addition to the company. Scott’s first assignment is to learn Ruby on Rails (RoR) so that he can assist us with creating web applications. A few weeks before he started with us he had already bought up some RoR books and started learning the language/framework on his own – nice!