В главе 10 railstutorial.org я не могу удалить пользователей через браузер. Все тесты пройдены, включая тесты на удаление пользователей, но при попытке удалить пользователя в качестве администратора через браузер, указывающий на localhost: 3000, я просто перенаправлен на профиль пользователя.
<%= link_to "delete", user, :method => :delete, :confirm => "Are you sure?", :title => "Delete #{user.name}" %>
Код, используемый для создания ссылки на удаление.
<%= javascript_include_tag :defaults %>
включено в заголовки.
Я действительно озадачен тем, почему это происходит. Журналы для сервера показывают запрос GET для информации о пользователе, как и следовало ожидать, когда он направляется на страницу пользователя, а не уничтожает пользователя.
Кроме того, использование button_to
вместо link_to
удалит пользователя, но не подтвердит действие.
РЕДАКТИРОВАТЬ: Добавление маршрутов.rb по запросу
resources :sessions, :only => [:new, :create, :destroy]
resources :users
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
match '/signup', :to => 'users#new'
match '/signin', :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'
root :to => 'pages#home'
get "pages/home"
get "pages/contact"
get "pages/about"
get "pages/help"
РЕДАКТИРОВАТЬ: application.js добавляется по запросу
require jquery
require jquery_ujs
require_tree .
РЕДАКТИРОВАТЬ: users_controller.rb добавляется по запросу
class UsersController < ApplicationController
before_filter :authenticate, :only => [:index, :edit, :update, :destroy]
before_filter :correct_user, :only => [:edit, :update]
before_filter :admin_user, :only => :destroy
def show
@user = User.find(params[:id])
@title = @user.name
end
def new
@user = User.new
@title = "Sign Up"
end
def create
@user = User.new(params[:user])
UserMailer.pw_email(@user).deliver
if @user.save
sign_in @user
flash[:success] = "Welcome to Sample App!"
redirect_to @user
else
@title = "Sign Up"
render 'new'
end
end
def edit
@title = "Edit User"
end
def update
if @user.update_attributes(params[:user])
flash[:success] = "Profile Updated"
redirect_to @user
else
@title = "Edit User"
render 'edit'
end
end
def index
@title = "All Users"
@users = User.paginate(:page => params[:page])
end
def show
@user = User.find(params[:id])
@title = @user.name
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed"
redirect_to users_path
end
private
def authenticate
deny_access unless signed_in?
end
def correct_user
@user = User.find(params[:id])
redirect_to(root_path) unless current_user?(@user)
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end