2013-07-13 37 views
1

我想切换用户以带有链接点击管理。我根据建议更改了代码,但仍然无法正常工作。不能得到这个控制器方法工作

控制器:从图

def toggle_admin 
    @user = User.find(params[:id]) 
    if @user.is_admin == true 
     @user.is_admin = false 
    else 
     @user.is_admin = true 
    end 

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

Stement调用方法:

<td><%= link_to 'Toggle Admin', :controller => :users, :method => :toggle_admin, :id => user.id, data: { confirm: 'Toggle Admin?' } %></td> 

路线:

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

有谁看到我的错误?谢谢。

我想我的路由可能是问题。看看日志怎么只显示所有用户的检索,然后该ID相匹配的用户:

Started GET "/users?data%5Bconfirm%5D=Toggle+Admin%3F&id=1&method=toggle_admin" for 127.0.0.1 at 2013-07-13 12:16:25 -0400 
Processing by UsersController#index as HTML 
    Parameters: {"data"=>{"confirm"=>"Toggle Admin?"}, "id"=>"1", "method"=>"toggle_admin"} 
    User Load (36.6ms) SELECT "users".* FROM "users" 
    User Load (71.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]] 
    Rendered users/index.html.erb within layouts/application (78.2ms) 

回答

1

你需要在那里做一个

@user.save 

地方。

此外,整if块也许可以通过

@user.is_admin = [email protected]_admin 
+0

这实际上是不工作。开始GET “/用户数据%5Bconfirm%5D =切换+管理%3F&ID = 1&方法= toggle_admin?” 为127.0.0.1在2013年7月13日12时10分38秒-0400 通过UsersController#指数为HTML 参数处理: { “数据”=> { “确认”=> “切换管理?”}, “ID”=> “1”, “方法”=> “toggle_admin”} 用户负载(38.8ms)选择 “用户”。*从 “用户” 用户负载(36.1ms)选择 “用户”。* FROM “用户” WHERE “用户”, “ID”= $ 1 LIMIT 1 [ “身份证”,1] –

1

尝试如下替换;

def toggle_admin 
    @user = User.find(params[:id]) 
    if @user.is_admin == true 
     @user.is_admin = false 
    else 
     @user.is_admin = true 
    end 

    @user.save 

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

,或者您也可以做使用update_attributes如下

@user.update_attributes(is_admin: true) 
+0

我认为这会工作,但没有运气。它似乎只是从数据库中获得记录,并且无所作为。 –

1

您可以使用toggle做到这一点,如果is_admin是一个布尔值:

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

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

我有一个缺陷控制器调用。它应该是:

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

相关问题