Tôi đang theo hướng dẫn Rails của Michael Hartl (chương 9). Khi tôi cố gắng truy cập vào các trang tương ứng với profile của người dùng, trình duyệt sẽ hiển thị các thông báo lỗi sau:before_action trong lỗi kết xuất bộ điều khiển người dùng: NoMethodError trong Người dùng # hiển thị
NoMethodError in Users#show
Showing /home/jonathan/Desktop/railsTut/sample_app/app/views/users/show.html.erb where line #1 raised:
undefined method `name' for nil:NilClass
Extracted source (around line #1):
1: <% provide(:title, @user.name) %>
2: <div class="row">
3: <aside class="span4">
4: <section>
Rails.root: /home/jonathan/Desktop/railsTut/sample_app
Đây là users_controller.rb tôi
class UsersController < ApplicationController
before_action :signed_in_user, only: [:edit, :update]
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(params[:user]) # Not the final implementation!
if @user.save
sign_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
def edit
@user = User.find(params[:id])
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 user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
# Before filters
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in."
end
end
end
Các tải trang tốt mà không có dòng:
before_action :signed_in_user, only: [:edit, :update]
Nhưng với những điều bao gồm mọi thứ xảy ra sai và tôi không thể hiểu tại sao.
Ngoài ra, đây là routes.rb
SampleApp::Application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy]
root to: 'static_pages#home'
match '/signup', to: 'users#new'
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
end
Any help is appreciated!
tệp tuyến đường và url là gì khi bạn truy cập trang này. – rmagnum2002
có nghĩa là bạn sẽ nhận được người dùng trong hồ sơ của người dùng. – Debadatt
Tôi vừa thêm tệp tuyến đường vào bài đăng gốc. Url là http: // localhost: 3000/users/1 –