I'm working with two controllers- login and admin. When the login action in the login controller has worked out successfully, it redirects to an index.rjs template in the admin controller. The problem is that this rjs template doesn't get interpreted, so I'm left with a screenful of javascript.
Here's the login action:
def login if request.get? session[:user_id] = nil @user = User.new else @user = User.new(params[:user]) logged_in_user = @user.try_to_login if logged_in_user session[:user_id] = logged_in_user.id session[:user_name] = logged_in_user.name session[:user_roommate] = logged_in_user.roommate jumpto = session[:jumpto] || {:controller => "admin", :action =>"index"} session[:jumpto] = nil redirect_to(jumpto) else flash[:notice] = "Invalid user/password combination" end end end
... and here's the index.rjs that it redirects to:
page.replace_html 'content', :partial => 'list' page.replace_html 'nav', :partial => 'nav_this_month'
... and here's what ends up on my screen: try { Element.update("content", "<div id=\"payments\">\n<div id=\"form\">\n\t<form action=\"/admin/create/23\" method=\"post\" onsubmit=\"new Ajax.Request('/admin/create/23', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\">\n<table>\n\n<tr id=\"form_row\">\t\n\t<th class=\"date\"><input id=\"payment_date\" name=\"payment[date]\" order=\"monthdayyear\" size=\"9\" type=\"text\" use_month_numbers=\"true\" value=\"11/19/2006\" /></th>\n\t<th class=\"payee\"><input id=\"payment_payee\" maxsize=\"15\" name=\"payment[payee]\" size=\"12\" type=\"text\" value=\"payee\" /></th>\n \t<th class=\"note\"><input id=\"payment_note\" maxsize=\"17\" name=\"payment[note]\" size=\"17\" type=\"text\" value=\"note\" /></th>\n\t<th class=\"payer\"><select id=\"payment_payer\" name=\"payment[payer]\"><option value=\"chris\">chris</option>\n<option value=\"josh\" selected=\"selected\">josh</option></select></th>\n\t<th class=\"amount\"><input id=\"form_amount\" maxsize=\"8\" name=\"payment[amount]\" size=\"7\" type=\"text\" value=\"0.00\" /></th>\n\t<th class=\"divvy\" id=\"form_submit\"><input name=\"commit\" type=\"submit\" value=\"divvy!\" /></th>\n</tr>\n</form>\n</table>\n</div>\n\n<table>\n\t<tr id=\"register_header\">\n\t\t<th class=\"date\"><a href=\"#\" onclick=\"new Ajax.Request('/admin/previous_month', {asynchronous:true, evalScripts:true}); return false;\"><<</a>\n\t\t\t\t\t\tdate\n\t\t\t\t\t\t<a href=\"#\" onclick=\"new Ajax.Request('/admin/next_month', {asynchronous:true, evalScripts:true}); return false;\">>></a>\n\t\t\t\t\t\t</th>\n\t\t<th class=\"payee\">payee</th><th class=\"note\">note</th><th class=\"payer\">payer</th><th class=\"amount\" id=\"register_header_amount\">amount</th><th class=\"divvy\" id=\"register_header_divvy\">divvy</th><th id=\"register_header_runningbalance\">balance</th><th><th></tr>\n\t\t<tbody id=\"register\">\n\t\t\n\n<tr class = debit id=\"21\">\n\n\t<td>11/16/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\"amount\">$10.00</td>\t\t\n\t<td class=\"divvy\">$-5.00</td>\n\n\t<td class=\"runningbalance_debit\">$-25.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/21', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/21', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\"5\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\"amount\">$20.00</td>\t\t\n\t<td class=\"divvy\">$-10.00</td>\n\n\t<td class=\"runningbalance_debit\">$-20.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/5', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/5', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\"14\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\"amount\">$10.00</td>\t\t\n\t<td class=\"divvy\">$-5.00</td>\n\n\t<td class=\"runningbalance_debit\">$-10.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/14', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/14', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n<tr id= \"26\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>chris</td>\n\t<td class=\"amount\">$20.00</td>\t\t\n\t<td class=\"divvy\">$10.00</td>\n\n\t<td class=\"runningbalance_debit\">$-5.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/26', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/26', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\"27\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\"amount\">$10.00</td>\t\t\n\t<td class=\"divvy\">$-5.00</td>\n\n\t<td class=\"runningbalance_debit\">$-15.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/27', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/27', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\"32\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\"amount\">$10.00</td>\t\t\n\t<td class=\"divvy\">$-5.00</td>\n\n\t<td class=\"runningbalance_debit\">$-10.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/32', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/32', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\"20\">\n\n\t<td>11/12/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\"amount\">$10.00</td>\t\t\n\t<td class=\"divvy\">$-5.00</td>\n\n\t<td class=\"runningbalance_debit\">$-5.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Request('/admin/edit/20', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Edit\" border=\"0\" src=\"/images/edit.png?1142214964\" /></a></td>\n\t\t\n\t\t<td><a href=\"#\" onclick=\"new Ajax.Updater('register', '/admin/destroy/20', {asynchronous:true, evalScripts:true}); return false;\"><img alt=\"Destroy\" border=\"0\" src=\"/images/destroy.png?1142214730\" /></a></td>\n</tr>\n\n\n\n<tr class =\"debit\" id=\"balance_fwd\">\n\t<td>11/1/2006</td>\n\t<td></td>\n\t<td>Balance Forward</td>\n\t<td></td>\n\t<td class=\"amount\"></td>\t\t\n\t<td class=\"divvy\"></td>\n\t<td class=\"runningbalance_debit\">$-10.00</td>\n</tr>\n\n\t\t</tbody>\n</table>\n\n</div>\n</div>\n\n"); Element.update("nav", "<dt id=\"logo\">divvy</dt>\n\t \n\t\t<dd id=\"t-logout\">\n\t\t<a href=\"/login/logout\">Log out</a>\n\t</dd>\n\t\t\n\t<dd id=\"t-profile\">\n\t\t<a href=\"#\" onclick=\"new Ajax.Request('/login/edit_user', {asynchronous:true, evalScripts:true}); return false;\">Profile</a>\n\t</dd>\n\t<dd id=\"selected\">\n\t\t<a href=\"#\" onclick=\"new Ajax.Request('/admin/this_month', {asynchronous:true, evalScripts:true}); return false;\">This Month</a>\n\t</dd>\n\t"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"content\", \"<div id=\\"payments\\">\n<div id=\\"form\\">\n\t<form action=\\"/admin/create/23\\" method=\\"post\\" onsubmit=\\"new Ajax.Request(\'/admin/create/23\', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\\">\n<table>\n\n<tr id=\\"form_row\\">\t\n\t<th class=\\"date\\"><input id=\\"payment_date\\" name=\\"payment[date]\\" order=\\"monthdayyear\\" size=\\"9\\" type=\\"text\\" use_month_numbers=\\"true\\" value=\\"11/19/2006\\" /></th>\n\t<th class=\\"payee\\"><input id=\\"payment_payee\\" maxsize=\\"15\\" name=\\"payment[payee]\\" size=\\"12\\" type=\\"text\\" value=\\"payee\\" /></th>\n \t<th class=\\"note\\"><input id=\\"payment_note\\" maxsize=\\"17\\" name=\\"payment[note]\\" size=\\"17\\" type=\\"text\\" value=\\"note\\" /></th>\n\t<th class=\\"payer\\"><select id=\\"payment_payer\\" name=\\"payment[payer]\\"><option value=\\"chris\\">chris</option>\n<option value=\\"josh\\" selected=\\"selected\\">josh</option></select></th>\n\t<th class=\\"amount\\"><input id=\\"form_amount\\" maxsize=\\"8\\" name=\\"payment[amount]\\" size=\\"7\\" type=\\"text\\" value=\\"0.00\\" /></th>\n\t<th class=\\"divvy\\" id=\\"form_submit\\"><input name=\\"commit\\" type=\\"submit\\" value=\\"divvy!\\" /></th>\n</tr>\n</form>\n</table>\n</div>\n\n<table>\n\t<tr id=\\"register_header\\">\n\t\t<th class=\\"date\\"><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/previous_month\', {asynchronous:true, evalScripts:true}); return false;\\"><<</a>\n\t\t\t\t\t\tdate\n\t\t\t\t\t\t<a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/next_month\', {asynchronous:true, evalScripts:true}); return false;\\">>></a>\n\t\t\t\t\t\t</th>\n\t\t<th class=\\"payee\\">payee</th><th class=\\"note\\">note</th><th class=\\"payer\\">payer</th><th class=\\"amount\\" id=\\"register_header_amount\\">amount</th><th class=\\"divvy\\" id=\\"register_header_divvy\\">divvy</th><th id=\\"register_header_runningbalance\\">balance</th><th><th></tr>\n\t\t<tbody id=\\"register\\">\n\t\t\n\n<tr class = debit id=\\"21\\">\n\n\t<td>11/16/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\\"amount\\">$10.00</td>\t\t\n\t<td class=\\"divvy\\">$-5.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-25.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/21\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/21\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\\"5\\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\\"amount\\">$20.00</td>\t\t\n\t<td class=\\"divvy\\">$-10.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-20.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/5\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/5\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\\"14\\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\\"amount\\">$10.00</td>\t\t\n\t<td class=\\"divvy\\">$-5.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-10.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/14\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/14\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n<tr id= \\"26\\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>chris</td>\n\t<td class=\\"amount\\">$20.00</td>\t\t\n\t<td class=\\"divvy\\">$10.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-5.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/26\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/26\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\\"27\\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\\"amount\\">$10.00</td>\t\t\n\t<td class=\\"divvy\\">$-5.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-15.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/27\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/27\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\\"32\\">\n\n\t<td>11/14/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\\"amount\\">$10.00</td>\t\t\n\t<td class=\\"divvy\\">$-5.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-10.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/32\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/32\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n<tr class = debit id=\\"20\\">\n\n\t<td>11/12/2006</td>\n\t<td>payee</td>\n\t<td>note</td>\n\t<td>josh</td>\n\t<td class=\\"amount\\">$10.00</td>\t\t\n\t<td class=\\"divvy\\">$-5.00</td>\n\n\t<td class=\\"runningbalance_debit\\">$-5.00</td>\n\t\t\n\t\t \n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/edit/20\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Edit\\" border=\\"0\\" src=\\"/images/edit.png?1142214964\\" /></a></td>\n\t\t\n\t\t<td><a href=\\"#\\" onclick=\\"new Ajax.Updater(\'register\', \'/admin/destroy/20\', {asynchronous:true, evalScripts:true}); return false;\\"><img alt=\\"Destroy\\" border=\\"0\\" src=\\"/images/destroy.png?1142214730\\" /></a></td>\n</tr>\n\n\n\n<tr class =\\"debit\\" id=\\"balance_fwd\\">\n\t<td>11/1/2006</td>\n\t<td></td>\n\t<td>Balance Forward</td>\n\t<td></td>\n\t<td class=\\"amount\\"></td>\t\t\n\t<td class=\\"divvy\\"></td>\n\t<td class=\\"runningbalance_debit\\">$-10.00</td>\n</tr>\n\n\t\t</tbody>\n</table>\n\n</div>\n</div>\n\n\");\nElement.update(\"nav\", \"<dt id=\\"logo\\">divvy</dt>\n\t \n\t\t<dd id=\\"t-logout\\">\n\t\t<a href=\\"/login/logout\\">Log out</a>\n\t</dd>\n\t\t\n\t<dd id=\\"t-profile\\">\n\t\t<a href=\\"#\\" onclick=\\"new Ajax.Request(\'/login/edit_user\', {asynchronous:true, evalScripts:true}); return false;\\">Profile</a>\n\t</dd>\n\t<dd id=\\"selected\\">\n\t\t<a href=\\"#\\" onclick=\\"new Ajax.Request(\'/admin/this_month\', {asynchronous:true, evalScripts:true}); return false;\\">This Month</a>\n\t</dd>\n\t\");'); throw e }
Any suggestions would be greatly appreciated.