我是rails的新手,我不断收到此错误
从:
class UserController < ApplicationController
def show
@user = User.find(params[:id])
end
end
这就是我所拥有的;
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
validates :name, presence: true
validates :email, presence: true
has_many :listings, dependent: :destroy
has_many :purchasing, class_name: "Transaction", foreign_key: "buyer_id", dependent: :destroy
has_many :sell, class_name: "Transaction", foreign_key: "seller_id", dependent: :destroy
has_many :purchased, class_name: "Archive", foreign_key: "buyer_id", dependent: :destroy
has_many :sales, class_name: "Archive", foreign_key: "seller_id", dependent: :destroy
has_many :selling_rooms, class_name: "Room", foreign_key: "seller_id", dependent: :destroy
has_many :buying_room, class_name: "Room", foreign_key: "buyer_id", dependent: :destroy
def can_buy?(listing_price)
if self.points >= listing_price
true
else
false
end
end
def withdraw(listing_price)
self.points -= listing_price
end
def purchasing_list
purchasing.includes(:seller, :listing)
end
def purchased_list
purchased.includes(:seller, :listing)
end
def sell_list
sell.includes(:seller, :listing)
end
def sales_list
sales.includes(:seller, :listing)
end
end
resources :users
我环顾四周,但我能找到的只是说它正在寻找一种不存在的资源。
答案 0 :(得分:2)
似乎params[:id]
没有出现。
首先尝试检查并放入
class UserController < ApplicationController
def show
logger"-----#{params[:id]}---"
@user = User.find(params[:id])
end
end
如果它为空,则从id
传来link
您收到此错误
ex. localhost:3000/users/1
此处params[:id] == 1
必须
答案 1 :(得分:1)
在您的表单中将您重定向到用户显示页面的某些位置,您应该发送ID或发送对象本身。
<%= link_to 'Show', user_path(user) %>
或
<%= link_to 'Show', user_path(user.id) %>
答案 2 :(得分:0)
请检查参数,因为我知道您正在params[:id] = nil
。
尝试在你的参数中传递:id ,或者你可以通过硬编码来检查它。
答案 3 :(得分:0)
检查你的控制台!
在正在爆炸的请求中发送的参数中,请仔细查看您的发送ID是什么。是user_id
吗?它是id
吗?你的控制器期待id
,所以请确保你传递一个。
如果您要传递整个对象,则需要指定。例如。如果您正在通过user
,则需要通过user.id
,因为您的控制器需要一个通常为数字的ID。 user
将给出整个对象,user.id
将只给出数字值,在这种情况下是ID。然后使用该数字,控制器操作可以在数据库中找到相关用户。