Link_to with callbacks?

I’ve got an image link that’s currently using link_to_remote. The link
calls a method that creates a file and completes with render :nothing =>
true. I’m using the :loading and :complete callbacks on
link_to_remote. On :loading I call a function that renders a
‘disabled’ image while the file’s being created. When the method
completes, I use the :complete callback to call another function that
opens a popup containing the file that got created and then renders the
original ‘enabled’ image.

The above works fine except for one thing. AFAIK, because it’s being
loaded by as opposed to being sent to the browser, the file that gets
rendered in the popup has to exist in the ‘public’ (or some other
externally visible) directory. I need the file to not be visible
externally.

The first solution I tried was to eliminate the popup (too many folks
have popups disabled anyway) and change the ‘render :nothing => true’ to
a ‘send_file’. That sends the file to the browser (I can see the file
content in Firebug) but, I guess since the browser is expecting a JS
response, it doesn’t do anything with it. Anybody know a way to send a
file using RJS so I can get the ‘view or save’ dialog box?

The second solution I tried was to change the link_to_remote to link_to.
That lets me send the file from a non-externally-visible location, which
solves that problem, but AFAIK link_to doesn’t support the callbacks. I
guess I could use the :onclick to trigger rendering the ‘disabled’
image, but can’t figure out how I’d be able to change back to the
‘enabled’ image once the file was received. Any thoughts on how I could
make this work?

Any thoughts on other approaches I might try would be greatly
appreciated. Like, is there maybe some way to use routes to have the
window.open(‘title’, ‘location/filename’) being executed in the browser
to open the popup and retrieve the file be intercepted by Rails and
mapped to a hidden location?

Thanks,
Bill