Ruby on rails Rails 3所需的独特友谊帮助
我需要关于友谊独特性和添加朋友链接的帮助 my routes.rb:Ruby on rails Rails 3所需的独特友谊帮助,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我需要关于友谊独特性和添加朋友链接的帮助 my routes.rb: devise_for :users resources :users, only: [:index, :show] do resources :friendships, only: [:create, :destroy] end 我的用户模型: class User < ActiveRecord::Base # Include default devise modules.
devise_for :users
resources :users, only: [:index, :show] do
resources :friendships, only: [:create, :destroy]
end
我的用户模型:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :username
# attr_accessible :title, :body
has_many :topics
has_many :posts
has_many :friendships
has_many :friends, :through => :friendships
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
end
class用户:友谊
有很多:反向友谊,:类名称=>“友谊”;:外键=>“朋友id”
有很多:反向朋友,:通过=>:反向朋友,:来源=>:用户
结束
我的友谊模式:
class Friendship < ActiveRecord::Base
attr_accessible :friend_id, :user_id
belongs_to :user
belongs_to :friend, :class_name => "User"
end
类友谊“用户”
结束
friendships_controller.rb:
class FriendshipsController < ApplicationController
before_filter :authenticate_user!
def create
@friendship = current_user.friendships.build(:friend_id => params[:friend_id])
if @friendship.save
flash[:notice] = "Arkadaşlara eklendi."
redirect_to root_url
else
flash[:error] = "Arkadaşlara Eklenemiyor."
redirect_to root_url
end
end
def destroy
@friendship = current_user.friendships.find(params[:id])
@friendship.destroy
flash[:notice] = "Arkadaşlarımdan kaldırıldı."
redirect_to current_user
end
end
class UsersController < ApplicationController
before_filter :authenticate_user!
def index
@users = User.all
end
def show
@user = User.find(params[:id])
@topics = @user.topics.paginate(page: params[:page])
@friendship = @user.friendships.build(:friend_id => params[:friend_id])
@friendships = @user.friendships.all
end
end
类友谊控制器params[:friend\u id])
如果@friendy.save
闪光[:注意]=“Arkadaşlara eklendi。”
将\u重定向到根\u url
其他的
闪光[:错误]=“Arkadaşlara Eklenemiyor。”
将\u重定向到根\u url
结束
结束
def销毁
@Friendly=当前用户.friendships.find(参数[:id])
@友谊。毁灭
闪光[注意]=“Arkadaşlarımdan kaldırıldı。”
将\u重定向到当前\u用户
结束
结束
用户\u controller.rb:
class FriendshipsController < ApplicationController
before_filter :authenticate_user!
def create
@friendship = current_user.friendships.build(:friend_id => params[:friend_id])
if @friendship.save
flash[:notice] = "Arkadaşlara eklendi."
redirect_to root_url
else
flash[:error] = "Arkadaşlara Eklenemiyor."
redirect_to root_url
end
end
def destroy
@friendship = current_user.friendships.find(params[:id])
@friendship.destroy
flash[:notice] = "Arkadaşlarımdan kaldırıldı."
redirect_to current_user
end
end
class UsersController < ApplicationController
before_filter :authenticate_user!
def index
@users = User.all
end
def show
@user = User.find(params[:id])
@topics = @user.topics.paginate(page: params[:page])
@friendship = @user.friendships.build(:friend_id => params[:friend_id])
@friendships = @user.friendships.all
end
end
class UsersControllerparams[:friend\u id])
@friendships=@user.friendships.all
结束
结束
这是我的朋友添加链接:
<h1>
<%= @user.username %>
</h1>
<%= link_to "Arkadaşlarıma Ekle", friendships_path(:friend_id => @user), :method => :post,class: "btn btn-large btn-primary" %>
@用户),:方法=>:post,类:“btn btn大型btn主”%>
而且我找不到正确的路径来将用户显示为朋友
<% for friendship in @friendships %>
<%= link_to friendship.friend.username, '#' %>
(<%= link_to 'Sil', friendship, :method => :delete %>)
<% end %>
(:删除%>)
有人能帮我吗?鉴于嵌套路由,它需要了解用户才能获得友谊。您可以使用很酷的辅助工具,从对象获取路径 有点像红宝石
<% @friendships.each do |friendship} %>
<%= link_to friendship.friend.username, '#' %>
(<%= link_to 'Sil', [@user, friendship], :method => :delete %>)
<% end %>
(:删除%>)
它将类似于“添加到朋友”链接。。。但我不清楚其中的逻辑——在这个阶段你有哪个@user?@user是登录用户还是“当前”用户
既然你用的是Deave。。。您可能真正想要的是:
<% current_user.friendships.each do |friendship} %>
<%= link_to friendship.friend.username, '#' %>
(<%= link_to 'Sil', [current_user, friendship], :method => :delete %>)
<% end %>
(:删除%>)
如果此代码段来自其他用户的页面。。。那就更像是
<h1><%= @user.username %></h1>
<%= link_to "Arkadaşlarıma Ekle", user_friendships_path(current_user, :friend_id => @user), :method => :post, class: "btn btn-large btn-primary" %>
@用户),:方法=>:post,类:“btn btn大型btn主”%>
在控制台中,您可以运行rake routes
这将显示所有可用的路由及其名称。这完全取决于您想要使用多少javascript以及您追求的用户体验。我不需要嵌套属性,只需在friendships controller中调用现有的create
操作即可。