2016-09-16 60 views
0

我正在製作我的第一個獨奏欄項目。這是一個Facebook克隆,目前我無法讓用戶接受好友請求。如果所發佈的信息不足以幫助解答問題,請告訴我。Rails:用戶不能接受朋友請求

friend_request_controller.rb 

class FriendRequestsController < ApplicationController 
before_action :set_friend_request, except: [:index, :create] 

def index 
    @incoming = FriendRequest.where(friend: current_user) 
    @outgoing = current_user.friend_requests 
end 

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

    if @friend_request.save 
     redirect_to user_path(current_user) 
    end 
end 

def update 
    friend = User.find(params[:id]) 
    @friend_request = current_user.friend_requests.find(friend_id: friend) 
    @friend_request.accept 
end 

show.html.erb 

Hello my my email is <%= @user.email %> 
<% if user_signed_in? %> 
    <li> 
<%= link_to 'Logout', destroy_user_session_path, :method => :delete %></li> 

    <li><%= link_to 'All Users', users_path %>  
</li> 
<% else %> 
<li> 
<%= link_to('Login', new_user_session_path) %> 
</li> 
<% end %> 
<ul> 

<% current_user.friend_requests.each do |request| %> 
<h4>You have new friend requests from:</h4> 
<li> 
    <%= User.find(request.friend_id).email %> 
    <%= link_to "Accept", friend_request_path(friend_id: @friend),method:"put" %> 
    <%= link_to "Decline", "#" %> 
</li> 
<% end %> 
</ul> 

我知道什麼是錯在這裏我的link_to助手

user.rb 

class User < ApplicationRecord 
has_many :friend_requests, dependent: :destroy 
has_many :pending_friends, through: :friend_requests, source: :friend 
has_many :friendships, dependent: :destroy 
has_many :friends, through: :friendships 
# Include default devise modules. Others available are: 
# :confirmable, :lockable, :timeoutable and :omniauthable 
devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
end 

friend_request.rb 

class FriendRequest < ApplicationRecord 
    belongs_to :user 
    belongs_to :friend, class_name: 'User' 

def accept 
    user.friends << friend 
    destroy 
end 

def destroy 
end 

end 
+0

您提供了很多代碼,非常棒!但是,你提供的問題內容是「我知道這裏的link_to helper出了問題」,這不是很有幫助。發生了什麼,會發生什麼?那條路線甚至定義了嗎?你的鏈接看起來很好... – fbelanger

+0

當我單擊接受鏈接時,我得到這個錯誤:PG :: UndefinedTable:錯誤:缺少表「ID」的FROM-clause條目LINE 1:... uests「 WHERE「friend_requests」。「user_id」= $ 1 AND「id」。「frie ... ^:SELECT」friend_requests「。* FROM」friend_requests「WHERE」friend_requests「。」user_id「= $ 1 AND」id「。」friend_id「 = 3限額$ 2 –

+0

您是否嘗試過我的答案? – araratan

回答

0

相反的:

<%= link_to "Accept", friend_request_path(friend_id: @friend),method:"put" %> 

嘗試改變@friendrequest.friend_id

<%= link_to "Accept", friend_request_path(friend_id: request.friend_id),method:"put" %> 
1

做什麼@araratan在frined_request控制器已經提到+,更換PARAMS:使用參數[ID] [:friend_id]。

+0

謝謝。我抓住了第二部分,並做出了改變 –