Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何创建最喜爱的用户配置文件?_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何创建最喜爱的用户配置文件?

Ruby on rails 如何创建最喜爱的用户配置文件?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,所以,我有一个有很多用户的应用程序,它们有用户配置文件。我希望能够收藏添加到“我的收藏夹”选项卡中的用户配置文件。我已经编写了以下代码,但出现了以下错误: ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "favorites_users" does not exist 2014-02-04T02:18:56.217171+00:00 app[web.1]: LINE 5: WH

所以,我有一个有很多用户的应用程序,它们有用户配置文件。我希望能够收藏添加到“我的收藏夹”选项卡中的用户配置文件。我已经编写了以下代码,但出现了以下错误:

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "favorites_users" does not exist
2014-02-04T02:18:56.217171+00:00 app[web.1]: LINE 5:                WHERE a.attrelid = '"favorites_users"'::regcl...
                             ^
现在我有以下代码:

收藏夹.rb

class Favorite < ActiveRecord::Base
    has_and_belongs_to_many :users
end
class FavoritesController < ApplicationController
 before_filter :find_user

  def index
    @favorites = @user.favorites
  end

  def create
    @user = User.find params[:id]
    @user.favorites << @user
  def

  def destroy
    @favorite = @user.favorites.find_by_user_id params[:id]
    @favorite.destroy unless @favorite.blank?
  end
  end

  private

  def find_user
    @user = current_user
  end

end
<div class="row">
  <%= render 'layouts/left_side' %>
  <div role="main" class="col-md-6">
    <div class="visitors-m">
      <div class="col-md-12 showing">
        <div class="row">
          <div class="col-md-12">
            <h4><%= pluralize(@favorites.size, 'favorites') %></h4>
            <div class="col-md-3 row fr">
              <select class="form-control">
                <option value="">SORT BY</option>
                <option value="1">General</option>
                <option value="2">News</option>
                <option value="3">Media</option>
                <option value="4">Funny</option>
              </select>
            </div>
          </div>
        </div>
      </div>


      <%#= @favorites.map(&:name).to_sentence %>


      <% @favorites.each do |favorite| %>
      <div class="col-md-12 users_info visitors">
        <div class="row">
          <div class="col-md-12">
            <div class="img-thumbnail">
              <% if favorite.profile_image.present? %>
                <%= image_tag(favorite.profile_image_url(:thumb), size: '100x100') %>
              <% else %>
                <%= image_tag("people_image.jpg") %>
              <% end %>
            </div>
            <div class="users_about_info">
              <h4><%= visitor.name %></h4>
              <p class="visit-time">
                <%= timeago_tag(current_user.visits.where(favorite: favorite).first.visited_at) %>
              </p>
            </div>
            <div class="fr">
              <p><%= favorite.address %></p>
              <p><%= favorite.age %> years old</p>
            </div>
            <div class="clr"></div>
          </div>
        </div>
      </div>
      <% end %>
    </div>
  </div>
  <%= render 'users/visitors_filter' %>
</div>
class收藏夹
收藏夹\u controller.rb

class Favorite < ActiveRecord::Base
    has_and_belongs_to_many :users
end
class FavoritesController < ApplicationController
 before_filter :find_user

  def index
    @favorites = @user.favorites
  end

  def create
    @user = User.find params[:id]
    @user.favorites << @user
  def

  def destroy
    @favorite = @user.favorites.find_by_user_id params[:id]
    @favorite.destroy unless @favorite.blank?
  end
  end

  private

  def find_user
    @user = current_user
  end

end
<div class="row">
  <%= render 'layouts/left_side' %>
  <div role="main" class="col-md-6">
    <div class="visitors-m">
      <div class="col-md-12 showing">
        <div class="row">
          <div class="col-md-12">
            <h4><%= pluralize(@favorites.size, 'favorites') %></h4>
            <div class="col-md-3 row fr">
              <select class="form-control">
                <option value="">SORT BY</option>
                <option value="1">General</option>
                <option value="2">News</option>
                <option value="3">Media</option>
                <option value="4">Funny</option>
              </select>
            </div>
          </div>
        </div>
      </div>


      <%#= @favorites.map(&:name).to_sentence %>


      <% @favorites.each do |favorite| %>
      <div class="col-md-12 users_info visitors">
        <div class="row">
          <div class="col-md-12">
            <div class="img-thumbnail">
              <% if favorite.profile_image.present? %>
                <%= image_tag(favorite.profile_image_url(:thumb), size: '100x100') %>
              <% else %>
                <%= image_tag("people_image.jpg") %>
              <% end %>
            </div>
            <div class="users_about_info">
              <h4><%= visitor.name %></h4>
              <p class="visit-time">
                <%= timeago_tag(current_user.visits.where(favorite: favorite).first.visited_at) %>
              </p>
            </div>
            <div class="fr">
              <p><%= favorite.address %></p>
              <p><%= favorite.age %> years old</p>
            </div>
            <div class="clr"></div>
          </div>
        </div>
      </div>
      <% end %>
    </div>
  </div>
  <%= render 'users/visitors_filter' %>
</div>
class-FavoritesController@user.favoritesfavorites\u用户不是Favorite或users下的一列,您自然会得到该错误。您需要拨打:

User.find(1).favourites

假设您只有一个收藏夹(单词favorite的语法用法),您的收藏夹实现是正常的。遗憾的是,这个词没有被广泛使用(大多数网站允许有多个收藏夹项目,或者在您的情况下是用户。如果用户可以收藏多个用户配置文件,则您需要收藏夹关系

如果需要帮助,请告诉我

编辑 模型

class User <ActiveRecord::Base
has_many :favourite_relationships
has_many :favourites, through: :favourite_relationships
has_many :people_who_favourited_me, through: :favourite_relationships, foreign_key: "favourite_id"
end

class FavouriteRelationships <ActiveRecord::Base
# attributes are ( user_id and favourite_id )
belongs_to :favourite
belongs_to :user
end

class Favourite < ActiveRecord::Base
has_many :favourite_relationships
has_many :users, through: :favourite_relationships
end

class User哇,非常感谢Sherwyn,这很有意义,是的,我需要一些帮助来实现这一点,因为用户将能够喜欢许多用户配置文件。您介意展示控制器、模型和视图代码的外观吗?控制器将是一个带有重定向的简单创建操作,这很好,再次感谢!它将如何工作是否使用该按钮?即,用户单击的“收藏此配置文件”按钮,不太确定该按钮将如何工作。该按钮将根据您所需的“收藏按钮”进行样式设置样式设置,然后单击它将向Favorite controller提交一个表单,以创建一个Favorite对象,存储当前用户的id和Favorite用户的id,类似于使用基本支架时所得到的id。明白了,但我指的不是样式设置,而是或多或少的实际代码。我猜它会是这样的。请他lp为我澄清这一点,非常感谢你的帮助。一旦你回答,我将接受你的回答。