저는 Michael Hartl 자습서를 처음 시작한 초보 프로그래머입니다.애셋을 로컬에서 사전 컴파일하여 응용 프로그램을 중단했습니다
나는 사이트의 모든 사용자를보고 관리자 기능으로 개별 사용자를 삭제하는 기능을 추가하는 제 9 장을 막 마칠 예정이었습니다.
모든 사양이 통과했으며 모든 것이 예상대로 작동했습니다. 그러나 Heroku에서 사이트를 테스트했을 때 사용자의 색인은 로컬 색인과 다르게 보입니다.
문제를 해결 한 Heroku에 푸시하기 전에 자산을 사전 컴파일하려고했습니다. 그러나 사용자 삭제 기능이 작동하지 않았습니다. 사용자를 삭제하는 대신 해당 사용자에게 전달되었습니다. 로컬 버전에서도 같은 일이 발생했습니다. 또한, 나는 로그 아웃 링크를 클릭하면 오류를 반환 것으로 나타났습니다 :
No route matches [GET] "/signout"
내 모든 사양은 여전히 그 신비의 더 내게 만드는 통과된다! 나는 그것이 자산이 집계되는 방법에 문제가 있다고 생각하지만 레일 초보자로서 건초 더미에서 바늘을 찾는 것처럼 느껴지므로 어떤 도움도 환영합니다.
routes.rb
Hooter::Application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy]
root to: 'static_pages#home'
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
match '/signup', to: 'users#new'
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
user_controller.rb
class UsersController < ApplicationController
before_filter :signed_in_user, only: [:index, :edit, :update, :destroy]
before_filter :correct_user, only: [:edit, :update]
before_filter :admin_user, only: :destroy
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
sign_in @user
flash[:success] = "Welcome to the hooter App!"
redirect_to @user
else
render 'new'
end
end
def index
@users = User.paginate(page: params[:page])
end
def show
@user = User.find(params[:id])
end
def edit
end
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:success] = "Profile updated"
sign_in(@user)
redirect_to @user
else
render 'edit'
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed"
redirect_to users_url
end
private
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in."
end
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
_header.html.erb
<header class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<%= link_to "hooter", root_path, id: "logo" %>
<nav>
<ul class="nav pull-right">
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Help", help_path %></li>
<% if signed_in? %>
<li><%= link_to "Users", users_path %></li>
<li id="fat-menu" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><%= link_to "Profile", current_user %></li>
<li>
<%= link_to "Settings", edit_user_path(current_user) %>
</li>
<li class="divider"></li>
<li>
<%= link_to "Sign out", signout_path, method: "delete" %>
</li>
</ul>
</li>
<% else %>
<li><%= link_to "Sign in", signin_path %></li>
<% end %>
</ul>
</nav>
</div>
</div>
</header>
는
//= require jquery_ujs
//= require jquery
//= require bootstrap
//= require_tree .
,745를 application.js
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
<%= yield %>
<%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %>
</div>
</body>
</html>
'jquery_ujs'는 – Amar
// =이 application.js에 존재 jquery_ujs을 필요로 내 생각에 따라 따기되지 않는 이유는 무엇입니까? – Amar
자바 스크립트를 사용 중지 했습니까? 당신은 서명 대신에 자바 스크립트에 의존하는 삭제 대신에 도착을 보내고 있습니다. –