我正在使用 Amistad 来实现友谊模型。我在friendships_controller
: index
, request_friend
, approve_friend
, remove_friend
,中有五个动作block_friend
。
我不确定如何在路由文件中定义路由,我尝试使用resources :friendships
但无法从用户个人资料发出好友请求。
以下是文件:
路线.rb:
resources :friendships
友谊控制器.rb:
class FriendshipsController < ApplicationController
before_filter :authenticate_user!
def index
@friends = current_user.friends
@pending_invited_by = current_user.pending_invited_by
@pending_invited = current_user.pending_invited
end
def request_friend
@friend = User.find(params[:id])
#if !@friend
# redirect_to :back
#end
current_user.invite @friend
redirect_to :back
end
def approve_friend
@friend = User.find(params[:id])
current_user.approve @friend
redirect_to :back
end
def remove_friend
@friend = User.find(params[:id])
current_user.remove_friendship @friend
redirect_to :back
end
def block_friend
@blocking = User.find(params[:id])
current_user.block @blocking
redirect_to :back
end
end
我希望用户 A 能够向用户 B 发送好友请求,而用户 B 可以接受、删除或忽略它。
这是我的 show.html.erb
<span>
<% if @user == current_user %>
<%= link_to 'Edit Profile', edit_profile_path(@user.user_name),class: 'btn edit-button' %>
<% elsif current_user.friend_with? @user %>Already Friends!
<%= button_to "Delete!",friendship_path(id: @user.id, friendship_action: 'remove_friendship'), method: :delete, class: "btn btn-primary" %>
<% elsif current_user.invited? @user %>Friend request sent!
<%= button_to "Unsend!", friendship_path(id: @user.id), :method => :delete, class: "btn btn-small btn-primary" %>
<% elsif current_user.invited_by? @user %>
<%= button_to "Accept!", friendship_path(@user.id, friendship_action: 'approve'), :method => :patch, class: "btn btn-small btn-primary" %>
<%= button_to "Reject!", friendship_path(@user.id, friendship_action: 'remove_friendship'), :method => :delete, class: "btn btn-small btn-primary" %>
<% else %>
<%= form_tag friendship_path(@user.id,friendship_action: 'invite') do %>
<%= submit_tag "Request Friend", class: "btn btn-primary" %>
<% end %>
<% end %>
</span>
这是我手动执行友谊时在控制台中进行的过程 - 即 user1.invite user2 - 它正在工作并且正在对友谊表进行更改 - 我使用 sqlitebrowser 进行验证
这是我在 show.html.erb.Ive 中按 link_to 时发生的情况。我只包含与友谊模型相关的控制台部分
我不知道为什么当我按下按钮时没有插入值。但是当我通过控制台手动执行时,它们被插入。