Ruby on rails 设置以便用户可以跟随(书签)其他用户

Ruby on rails 设置以便用户可以跟随(书签)其他用户,ruby-on-rails,Ruby On Rails,我已经创建了两组不同的编码,假设它们允许一个用户跟随(书签)另一个用户。例如,用户A跟随用户B、C和D。用户A转到他们的收藏夹页面,其中列出了他们跟随的所有用户(B、C和D)。这将是一个单程跟随。我创建的代码没有执行跟踪用户的操作,因此我决定遵循railstutorial Twitter跟踪概念。我得到一个“未初始化的常量关系控制器”。所以路线有问题 有人能看一看,也许能指出问题所在吗 顺便说一句,这感觉像是为这么简单的东西编写了很多代码……即使我自己在没有遵循教程的情况下也这么做了。我只是希望

我已经创建了两组不同的编码,假设它们允许一个用户跟随(书签)另一个用户。例如,用户A跟随用户B、C和D。用户A转到他们的收藏夹页面,其中列出了他们跟随的所有用户(B、C和D)。这将是一个单程跟随。我创建的代码没有执行跟踪用户的操作,因此我决定遵循railstutorial Twitter跟踪概念。我得到一个“未初始化的常量关系控制器”。所以路线有问题

有人能看一看,也许能指出问题所在吗

顺便说一句,这感觉像是为这么简单的东西编写了很多代码……即使我自己在没有遵循教程的情况下也这么做了。我只是希望用户能够为另一个用户页面的url添加书签,将其保存到某个收藏夹页面(本质上是书签页面),并为他们提供删除该书签的选项。我认为这甚至不需要数据库

路线:

  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控制器才能使其正常工作。感谢您尝试帮助。感谢您尝试帮助。我使用了此答案和一些附加代码的组合+添加了关系控制器。谢谢你的帮助。我还完成了为收藏夹编写的另外两个自定义代码,并使其正常工作,因此,如果有人需要自定义解决方案,请告诉我,我将发布我的代码。我使用了此答案和一些附加代码的组合+添加了一个关系控制器。谢谢你的帮助。我还完成了为收藏夹编写的另外两个自定义代码,并使其正常工作,因此,如果有人需要自定义解决方案,请告诉我,我将发布我的代码。