2013-07-13 10 views
1

링크 클릭으로 관리자로 사용자를 전환하고 싶습니다. 권장 사항에 따라 코드를 변경했지만 여전히 작동하지 않습니다.이 컨트롤러 방법을 사용할 수 없습니다.

컨트롤러 :

<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' 

이 사람이 내 실수를 볼 수 있습니까 메소드를 호출보기에서

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? 감사.

내 라우팅이 문제 일 수 있다고 생각합니다. 다음 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

. 2013-07-13 12:10:38 -0400에서 127.0.0.1에 대해 사용자/데이터 % 5Bconfirm % 5D = 토글 + 관리자 % 3F & id = 1 & method = toggle_admin " HTML로 UsersController # index로 처리 매개 변수 : { "data"=> { "confirm"=> "Toggle Admin?"}, "id"=> "method"=> "toggle_admin"} 사용자로드 (38.8ms) "사용자"선택. * FROM "users" 사용자로드 (36.1ms) SELECT "users". * "FROM"users "WHERE"users "."id "= $ 1 LIMIT 1 [["id ", 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
is_admin는 부울 값입니다 경우는, 이러한 목표를 달성하기 위해 toggle을 사용할 수 있습니다

:

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} %>

관련 문제