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 - 在 Ruby 中解析、编辑和输出 CSS

ruby - 为什么 posix-spawn 强制在 linux 中使用 vfork?

ruby-on-rails - Rails 4 + 设计单独的用户 CRUD

ruby - Mechanize 中的迭代以抓取页面

ruby-on-rails - 使用 devise rails 将 SignIn 和 SignUp 放在单个页面中

ruby-on-rails - 我需要简单但完整的说明来实现设计身份验证策略

ruby-on-rails - 在终端 : #rails works but #sudo rails does not -RVM Gemset

javascript - 如何使用 Ajax 通过复选框将对象移动到另一个范围?

javascript - 使用 Ajax Rails 4 保存后的操作

ruby-on-rails - Mongoid:搜索数组