The
Palm
Civet

rendering rails partials with ajax w/o a framework

ever wanted to quickly create a link in rails that, when clicked, dynamically renders a partial in a targeted element? accepting bonus points for being framework agnostic? throw this puppy in your application helper =>


  def remote_partial_link(*args)
    name         = args.first
    partial      = args.second
    target_id    = args.third
    html_options = args.fourth
    locals       = args.fifth
    if html_options
      html_options = html_options.stringify_keys
      tag_options = tag_options(html_options)
    else
      tag_options = nil
    end
    if locals
      p = render_to_string :partial => partial, :locals => locals
    else
      p = render_to_string :partial => partial
    end
    p = escape_javascript(p).gsub("\"","'")
    "<a onclick=\"document.getElementById('#{target_id}').innerHTML = '#{p}'\" "+
      "#{tag_options}>#{name}</a>"
  end

basically, its a bastardized version of rails built-in link_to helper. with it, in your views you can write =>


  <%= remote_partial_link("Add Link", "lists/link", "link-#{i}",
    { :class => "ajax" }, { :i => i }) %>

the only limitation is that these are generated on the page’s load, so it can’t account for any remote calls that happens after that. but that also makes this solution good for performance, since the script is baked inline to the element and ready to fire. the only other piece of set-up is making the render_to_string method accessible in your helpers from your application controller =>


  helper_method :render_to_string

fluid for web development

i have been using fluid, the mac osx application for wrapping sites as their own webkit applications for a while, but only for beasts like gmail and google reader. then i realized, fluid makes a great sidekick for my new emacs driven development environment:

* it saves the previous session’s tabs, so you can preserve and separate your development from daily browsing.
* you can give it a global hotkey to pull it up quickly.
* you get to use webkit’s ever-improving, top-notch webkit inspector.

setting it up is super easy. for example, if you’re working in rails, create a new fluid app at the address 0.0.0.0:3000, call it whatever you want, give it a fancy icon and you’re ready to apple+tab between the guts and face of your project.

sync coda, espresso, textmate across multiple computers with dropbox

if you don’t use dropbox, the multi-platformed, cloud-backed-up, version-tracking storage-and-sharing application, you are most likely a) uninformed or b) an idiot. it’s one of those ‘how did i live without it’ kinds of things.

recently i started unlocking a new batch of syncing/redundancy potential through the process of creating symbolic links, which are aliases that jump to a different directory on your system. with these, you can dropbox-ize folders that would normally reside in your ~/Library directory. for example, crack open a terminal window =>


mv ~/Library/Application\ Support/Textmate ~/Dropbox
ln -s ~/Dropbox/Textmate ~/Library/Application\ Support/Textmate

this would move your textmate bundles and preferences to your dropbox, but to your mac, it would seem to be in the same location. to use the same textmate folder on a different mac, back-up your ~/Library/Application\ Support/Textmate folder and run the 2nd command on that machine. the same process should work for coda or espresso.

for more info on what else you can do with dropbox, check out dropbox’s wiki page.

compiling and sharing code, ideas, and tools for making better websites and applications.

by justin talbott {email me}

what is a palm civet?