Ruby on rails 设置以便用户可以跟随(书签)其他用户
我已经创建了两组不同的编码,假设它们允许一个用户跟随(书签)另一个用户。例如,用户A跟随用户B、C和D。用户A转到他们的收藏夹页面,其中列出了他们跟随的所有用户(B、C和D)。这将是一个单程跟随。我创建的代码没有执行跟踪用户的操作,因此我决定遵循railstutorial Twitter跟踪概念。我得到一个“未初始化的常量关系控制器”。所以路线有问题 有人能看一看,也许能指出问题所在吗 顺便说一句,这感觉像是为这么简单的东西编写了很多代码……即使我自己在没有遵循教程的情况下也这么做了。我只是希望用户能够为另一个用户页面的url添加书签,将其保存到某个收藏夹页面(本质上是书签页面),并为他们提供删除该书签的选项。我认为这甚至不需要数据库 路线:Ruby on rails 设置以便用户可以跟随(书签)其他用户,ruby-on-rails,Ruby On Rails,我已经创建了两组不同的编码,假设它们允许一个用户跟随(书签)另一个用户。例如,用户A跟随用户B、C和D。用户A转到他们的收藏夹页面,其中列出了他们跟随的所有用户(B、C和D)。这将是一个单程跟随。我创建的代码没有执行跟踪用户的操作,因此我决定遵循railstutorial Twitter跟踪概念。我得到一个“未初始化的常量关系控制器”。所以路线有问题 有人能看一看,也许能指出问题所在吗 顺便说一句,这感觉像是为这么简单的东西编写了很多代码……即使我自己在没有遵循教程的情况下也这么做了。我只是希望
resources :sessions, only: [:new, :create, :destroy]
resources :relationships, only: [:create, :destroy]
resources :users do
get 'settings', on: :member
end
用户模型:
has_many :notifications
has_many :users, dependent: :destroy
has_many :relationships, foreign_key: "follower_id", dependent: :destroy
has_many :followed_users, through: :relationships, source: :followed
has_many :reverse_relationships, foreign_key: "followed_id", class_name: "Relationship", dependent: :destroy
has_many :followers, through: :reverse_relationships, source: :follower
def following?(other_user)
relationships.find_by(followed_id: other_user.id)
end
def follow!(other_user)
relationships.create!(followed_id: other_user.id)
end
def unfollow!(other_user)
relationships.find_by(followed_id: other_user.id).destroy!
end
想想看,关系是多对多关联之间的联接表(即,一个用户可以跟随多个人,而一个用户可以跟随多个人)。你不应该需要关系路线。删除
资源:关系,仅:[:创建,:销毁]
。此外,请确保已在关系表中迁移,如:
class CreateRelationships < ActiveRecord::Migration
def self.up
create_table :relationships do |t|
t.integer "follower_id"
t.integer "followed_id"
end
end
def self.down
drop_table :relationships
end
end
class CreateRelationships
并创建了一个关系模型,如:
class Relationship <ActiveRecord::Base
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
end
类关系像这样思考关系是多对多关联之间的联接表(即,一个用户可以跟随多个人,一个用户可以跟随多个人)。你不应该需要关系路线。删除资源:关系,仅:[:创建,:销毁]
。此外,请确保已在关系表中迁移,如:
class CreateRelationships < ActiveRecord::Migration
def self.up
create_table :relationships do |t|
t.integer "follower_id"
t.integer "followed_id"
end
end
def self.down
drop_table :relationships
end
end
class CreateRelationships
并创建了一个关系模型,如:
class Relationship <ActiveRecord::Base
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
end
阶级关系我会走这条路:
resources :sessions, only: [:new, :create, :destroy]
resources :users do
get 'settings', on: :member
post 'follow', on: :member
post 'unfollow, on: :member
end
在用户控制器中:
def follow
friend = User.find params[:user_id]
current_user.follow! friend unless current_user.following? friend
redirect_to friend
end
def unfollow
friend = User.find params[:user_id]
current_user.unfollow! friend
redirect_to friend
end
以及显示要跟踪/取消跟踪的用户时
<% if current_user.following? @user %>
<%= link_to 'Bookmark', follow_user_path(user_id: @user.id), method: :post %>
<% else %>
<%= link_to 'Remove Bookmark', unfollow_user_path(user_id: @user.id), method: :post %>
<% end %>
我会走这条路:
resources :sessions, only: [:new, :create, :destroy]
resources :users do
get 'settings', on: :member
post 'follow', on: :member
post 'unfollow, on: :member
end
在用户控制器中:
def follow
friend = User.find params[:user_id]
current_user.follow! friend unless current_user.following? friend
redirect_to friend
end
def unfollow
friend = User.find params[:user_id]
current_user.unfollow! friend
redirect_to friend
end
以及显示要跟踪/取消跟踪的用户时
<% if current_user.following? @user %>
<%= link_to 'Bookmark', follow_user_path(user_id: @user.id), method: :post %>
<% else %>
<%= link_to 'Remove Bookmark', unfollow_user_path(user_id: @user.id), method: :post %>
<% end %>
我需要添加关系\u控制器才能使其正常工作。我需要添加关系\u控制器才能使其正常工作。感谢您尝试帮助。感谢您尝试帮助。我使用了此答案和一些附加代码的组合+添加了关系控制器。谢谢你的帮助。我还完成了为收藏夹编写的另外两个自定义代码,并使其正常工作,因此,如果有人需要自定义解决方案,请告诉我,我将发布我的代码。我使用了此答案和一些附加代码的组合+添加了一个关系控制器。谢谢你的帮助。我还完成了为收藏夹编写的另外两个自定义代码,并使其正常工作,因此,如果有人需要自定义解决方案,请告诉我,我将发布我的代码。