ruby-on-rails - 找不到 'id' =show 的用户

标签 ruby-on-rails ruby devise

今天向您提出一个 Rails/Design 问题。我正在处理网站的用户个人资料,但遇到了此错误

ActiveRecord::RecordNotFound 位于/users/show

找不到“id”=show 的用户


不确定究竟发生了什么,因为我以前从未真正遇到过类似的事情。以下是一些需要查看的必要文件 -


users_controller.rb:

class UsersController < ApplicationController
  before_action :authenticate_user!, except: [:show]

  def show
    @user = User.find(params[:id])
    @user_bookmarks = @user.bookmarks
    @liked_bookmarks = @user.likes
  end

  def update
    if current_user.update_attributes(user_params)
      flash[:notice] = "User information updated"
      redirect_to edit_user_registration_path
    else
      flash[:error] = "Invalid user information"
      redirect_to edit_user_registration_path
    end
  end

  private

  def user_params
    params.require(:user).permit(:name, :avatar)
  end
end

routes.rb:

Rails.application.routes.draw do

  devise_for :users
  resources :users, only: [:show, :update]

  post :incoming, to: 'incoming#create'

  resources :topics do
    resources :bookmarks, except: [:index]
  end

  resources :bookmarks, except: [:index] do
    resources :likes, only: [:create, :destroy]
  end

  get 'about' => 'welcome#about'

  root to: 'welcome#index'
end

user.rb:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable

  mount_uploader :avatar, AvatarUploader
  has_many :topics, dependent: :destroy
  has_many :bookmarks, dependent: :destroy
  has_many :likes, dependent: :destroy

  validates :name, presence: true

  def admin?
    role == 'admin'
  end

  def moderator?
    role == 'moderator'
  end

  def member?
    role == 'member'
  end

  def liked(bookmark)
    likes.where(bookmark_id: bookmark.id).first
  end
end

最佳答案

show 操作取决于查找 id。由于您访问的是 URL /users/show,因此它假定您正在尝试查找 idshow 的用户。相反,您应该访问 /users/1 这样的网址来触发 show 操作。

The Rails guide on routing有一个部分指定 GET/photos/:id 映射到 photos#show

关于ruby-on-rails - 找不到 'id' =show 的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30858104/

相关文章:

ruby-on-rails - rails 中的胖 Controller

ruby-on-rails - 为什么此devise_group调用会出现NoMethodError?

ruby-on-rails - 白名单与设计

ruby-on-rails - Hartl Rails 教程第 8 章 - 无法注销 Sample_App。所有 rspec 测试都通过

ruby-on-rails - 在 seeds.rb 中使用 "No such file"时出现 `gets.chomp` 错误

ruby-on-rails - 使用 pow 的 devise/omniauth 问题 - 在 Rails 服务器上工作

ruby-on-rails - 找不到 rails.cmd 或 rails.bat

ruby - ruby 2 中的 DateTime 减法?

mysql - 针对数百万阵列 IDS 优化 Rails IN 查询

ruby-on-rails - 如何创建默认的 "Guest" session ,以便设计助手 current_user 将显示我的访客用户?