2013-07-14 2 views
0

У меня есть способ переключить пользователя между admin или not-admin. Когда я нажимаю ссылку, я помещаюсь обратно в индекс пользователя со следующим в моей адресной строке: http://localhost:3000/users?id=1&method=toggle_admin. Насколько я могу судить, у меня есть соответствующий код для запуска метода. Может ли кто-нибудь увидеть ошибку?Метод не вызывается, но определяется в контроллере и модели

Вот метод вид link_to:

<%= link_to 'Toggle Admin', { :controller => :users, :method => :toggle_admin, :id => user.id} %> 

Вот routes.rb заявление:

match 'users/:id/toggle_admin' => 'users#toggle_admin' 

Способ управления:

def toggle_admin 
    @user = User.find(params[:id]) 

    User.toggle_admin(@user) 

    respond_to do |format| 
     format.html { redirect_to @users } 
    end 

end 

Метод Модель:

def toggle_admin(user) 
    if user.is_admin.nil or user.is_admin = '' 
    user.is_admin = false 
    end 
    user.toggle is_admin 

    user.save 
end 

ответ

2

Попытка использования :action вместо :method. :method следует использовать с глаголом HTTP (например, GET, PUT и т. Д.)

<%= link_to 'Toggle Admin', { :controller => :users, :action => :toggle_admin, :id => user.id} %> 
+0

хороший глаз. Спасибо. –