« GWT and XUL | Main | Developer's Notebook: Find computed styles in IE, Firefox, Opera or Safari »

Rails Development for iPhone with rails_iui

iphone_sim.jpg

I've been doing some web development for iPhone and Mobile Safari lately, not least because of a series of articles that will be showing up in IBM DeveloperWorks soon.

I was using the iUI toolkit, which contains a number of CSS styles and JavaScript event handlers to make iPhone Web apps look and feel somewhat like native iPhone applications. As I was working with iUI, I realized I was building up a library, so I converted everything to a Rails plugin: rails_iui.

Get the plugin from github: git://github.com/noelrappin/rails-iui.git

Right now the plugin is primarily interested in doing a few things:

It contains a rake task to download iUI, move it's files to the Rails public directories, and change the CSS image URL's accordingly.

There's a controller class method acts_as_iphone_controller, calling that sets up a before filter that captures the Mobile Safari user agent string and sets the request format to iphone for use in respond_to blocks. For testing purposes you can call the method as acts_as_iphone_controller(true), and all calls will be treated as iPhone requests.

There is a module of helper methods that are wrapper methods or combinations of iUI CSS classes. Included are:

  • A method for creating the iPhone toolbar at the top of the view.

  • Methods for creating the iPhone list structures from a list of elements that know their associated URLs, including a grouped list in the style of the iPod application

  • Rounded rectangle classes

  • A form helper for the iPhone toggle button, as seen in the settings page.

  • A method to specify an Ajax callback when the phone changes orientation

The short term goals for the project are to tighten the code a bit and improve documentation and testing. Longer term goals are to augment iUI's JavaScript handlers with something a bit friendlier with Rails, particularly in handling history and back behavior.

So take it for a spin, let me know what you think. Hope you find it useful.


Please check out my book, Professional Ruby on Rails.

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/t/trackback/776034/28784124

Listed below are links to weblogs that reference Rails Development for iPhone with rails_iui:

Comments

This looks awesome! Thanks for putting it together :)

One problem though: When I run the iui:install rake task, I get this error:

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

All of the files looks like they down load properly, but it doesn't move them to the 'public' folder and re-link the CSS. Any advice? I used Git to clone the rails-iui directory into my vendor/plugins dir in my Rails app. Should it go somewhere else?

Thanks :)

I get an error like this (which I think might be a problem in how I'm managing the gzip), but I do get all the files moved to the public folder.

Try this: download the file to vendor, if the tar didn't work, manually untar it, which should create the directory vendor/iui.

Then the following two rake tasks will do the other parts of the install

rake iui:copy

rake iui:change_root

Noel

The extra rake tasks did the trick, Noel. Thanks a million :)

This definitely looks interesting!

I made a small change to the rake tasks so that only the iui directory is extracted (as opposed to the whole archive including examples) into the vendor directory. I also delete the tar.gz after extraction.

These changes are available at my clone of your repo on github:
http://github.com/ciaranlee/rails-iui/tree/master

I can't figure out how to stop the tar error from happening though, but it's working fine for me anyway...

Ciaran

Ciaran -- Great, could you submit that as a pull request on github?

Hi, what about making a sample app available? The README file is very well documented, but nothing is better than learning by example :-)

Watch the skies, there will be a sample appearing in an online article soon. I'll post sample code relating to that shortly.

Post a comment

If you have a TypeKey or TypePad account, please Sign In

Contact Us
ajax@pathf.com

Pathfinder Development Careers

Search


AgileAjax RSS Feed

AgileAjax Email Feed

  • email feed

    Enter your email address:

    Delivered by FeedBurner

Categories