redirect_to not working as expected, sent to update instead of show

Hi,

This is my first post to this list, so apologies if anything is amiss.

After processing and AJAX PUT request to a custom method, I want to redirect_to the show method of another controller, but redirect_to is keeping the PUT verb, so I get sent to update instead.

Rails 3.2.2, ruby 1.9.3-p0

I have tasklists that have many tasks.

The tasks are a list, and after moving a task down in the list I want to redirect and show the parent tasklist:

Models:

class TaskList < ActiveRecord::Base

has_many :tasks, :order => ‘position asc’, :dependent => :destroy

end

class Task < ActiveRecord::Base

belongs_to :task_list

end

Controllers:

class TaskListsController < ApplicationController

def show

@task_list = TaskList.find(params[:id], :include => [:tasks])

end

end

class TasksController < ApplicationController

def move_task_down

@task = Task.find(params[:id])

respond_to do |format|

if @task.move_lower

format.js { redirect_to @task.task_list, :notice => t(‘task_lists.successfully_moved’) }

else

format.js { redirect_to @task.task_list, :alert => t(‘task_lists.error_move_task’) }

end

end

end

end

routes.rb:

resources :task_lists

put ‘tasks/:id/move_down’ => ‘tasks#move_task_down’, :as => ‘move_task_down’

In the log:

Started PUT “/tasks/406137300/move_down” for 127.0.0.1 at 2012-03-20 12:19:17

Processing by TasksController#move_task_down as JS

Parameters: {“id”=>“406137300”}

Redirected to http://localhost:3000/task_lists/1007688486

Started PUT “/task_lists/1007688486” for 127.0.0.1 at 2012-03-20 12:19:17

Processing by TaskListsController#update as JS

Parameters: {“id”=>“1007688486”}

As seen in the log above, the user is being properly redirected to /task_lists/xxxxxxx, but the verb is PUT instead of GET,

which routes to the update method of TaskListsController, instead of the show method, which is where I want to go…

what am I doing wrong?

Thanks,

Martin