Ruby on rails ActiveRecord::RecordNotFound FriendRequestsControl#show中出现错误

Ruby on rails ActiveRecord::RecordNotFound FriendRequestsControl#show中出现错误,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我对自我参照关系还不熟悉,目前正在学习一个相互友谊模型的教程 我已经实现了FriendRequest模型并将其与用户模型关联: FriendRequest.rb class FriendRequest < ApplicationRecord belongs_to :user belongs_to :friend, class_name: 'User' class User < ApplicationRecord has_many :friend_requests, de

我对自我参照关系还不熟悉,目前正在学习一个相互友谊模型的教程

我已经实现了FriendRequest模型并将其与用户模型关联:

FriendRequest.rb

class FriendRequest < ApplicationRecord
  belongs_to :user
  belongs_to :friend, class_name: 'User'
class User < ApplicationRecord
  has_many :friend_requests, dependent: :destroy
  has_many :pending_friends, through: :friend_requests, source: :friend
class FriendRequestsController < ApplicationController
  before_action :set_friend_request, except: [:index, :create]

  def create
    friend = User.find(params[:friend_id])
    @friend_request = current_user.friend_requests.new(friend: friend)

    if @friend_request.save
      render :show, status: :created, location: @friend_request
    else
      render json: @friend_request.errors, status: :unprocessable_entity
    end
  end

  private

  def set_friend_request
    @friend_request = FriendRequest.find(params[:id])
  end
end
 Rails.application.routes.draw do
   ...
  resources :users

  resources :user_sessions, only: [:new, :create, :destory]
  get 'login' => 'user_sessions#new'
  get 'logout' => 'user_sessions#destroy'

  get 'friends/index'
  get 'friends/destroy'
  resources :friend_requests

end
我尝试在
create
操作和private方法中修改参数,但总是得到相同的ActiveRecord错误

这是post请求中的日志:

 Started POST "/friend_requests" for 127.0.0.1 at 2018-04-28 19:36:16 -0400
Processing by FriendRequestsController#create as HTML
  Parameters: {"authenticity_token"=>"BWRNktuMbSt6nNWDyloy+t7fwhyd8ITa/P4/7C0zmeCHyEPFQBVe9h2MpdCUC4Od4tjoC5Qg0x4Z6owf+29F9Q=="}
  User Load (1.6ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", nil], ["LIMIT", 1]]
Completed 404 Not Found in 57ms (ActiveRecord: 4.4ms)



ActiveRecord::RecordNotFound (Couldn't find User with 'id'=):

app/controllers/friend_requests_controller.rb:5:in `create'

在控制器中,您希望
参数[:friend\u id]
为,但不在请求中传递它

你的链接应该是这样的:

link_to 'Add Friend', friend_requests_path(friend_id: 123), method: :post
button_to 'Add Friend', friend_requests_path, params: {friend_id: 123}
或者像这样:

link_to 'Add Friend', friend_requests_path(friend_id: 123), method: :post
button_to 'Add Friend', friend_requests_path, params: {friend_id: 123}

你的routes.rb文件中有什么?好问题,我已将其添加到问题中。请尝试传递你在操作中期望的id,
friend\u requests\u path(id:some\u friend\u id)
。确保此
.new(friend:friend)
有效,不应是
friend\u id
?。此外,还应该传递对象的id(因为不推荐使用其他方法:)。