方法未被调用,但在控制器和模型中定义

时间:2013-07-14 14:27:27

标签: ruby-on-rails

我有一种方法可以在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

1 个答案:

答案 0 :(得分:2)

尝试使用:action代替:method:method应与HTTP动词一起使用(即GET,PUT等)

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