Ruby on rails 正在尝试将收藏夹模型添加到我的应用程序…获取路由错误

Ruby on rails 正在尝试将收藏夹模型添加到我的应用程序…获取路由错误,ruby-on-rails,Ruby On Rails,我有一个应用程序,其中有一个预定义的饮料列表,用户可以查看。我试图让用户能够喜欢/不喜欢一种饮料 由于某些原因,当我单击收藏夹链接时,我收到AssociationMismatch错误。显然代码不喜欢我当前的用户。最喜欢的饮料:收藏 结束 资源:收藏夹 获取“收藏夹/显示” MODEL user.rb has_one :cabinet has_many :favorite_drinks has_many :drinks, through: :favorite_drin

我有一个应用程序,其中有一个预定义的饮料列表,用户可以查看。我试图让用户能够喜欢/不喜欢一种饮料

由于某些原因,当我单击收藏夹链接时,我收到AssociationMismatch错误。显然代码不喜欢我当前的用户。最喜欢的饮料:收藏 结束 资源:收藏夹

获取“收藏夹/显示”

MODEL user.rb

     has_one :cabinet
     has_many :favorite_drinks
     has_many :drinks, through: :favorite_drinks
MODEL favorite_drink.rb

    attr_accessible :drink_id, :user_id

    belongs_to :user
    belongs_to :drink
查看\u results.html.haml

   %td= link_to "favorite", favorite_drinks_path(drink_id: drink.id, type: "favorite"), method: "get"
   %td= link_to "unfavorite", favorite_drinks_path(drink, type: "unfavorite"), method: "get"
   %table.table.table-striped
     %thead
       %tr
         %th Name
     %tbody
       - if @drinks.each do |drink|
         %tr
           %td= link_to drink.name, drink
查看收藏夹/show.html.haml

   %td= link_to "favorite", favorite_drinks_path(drink_id: drink.id, type: "favorite"), method: "get"
   %td= link_to "unfavorite", favorite_drinks_path(drink, type: "unfavorite"), method: "get"
   %table.table.table-striped
     %thead
       %tr
         %th Name
     %tbody
       - if @drinks.each do |drink|
         %tr
           %td= link_to drink.name, drink
我的更新代码

迁移创建_favorite_drinks.rb

    class CreateFavoriteDrinks < ActiveRecord::Migration
     def change
       create_table :favorite_drinks do |t|
         t.integer :drink_id
         t.integer :user_id

         t.timestamps
       end
     end
   end
class CreateFavoriteDiverses
2导致错误的代码部分的内容


  • @饮料是一个数组,因此在将它们添加到用户最喜爱的饮料列表之前,您需要对每个饮料进行迭代,使用代码中导致错误的部分的
    2项


  • @饮料是一个数组,因此在使用
    将它们添加到用户喜爱的饮料列表之前,您需要对每个饮料进行迭代。我现在在favorite controller中获得一个“未知属性:user_id”。这一点都没有帮助。你改变了什么?如果你改变了什么,请更新你的问题。用我改变的内容更新。不太确定用户id来自何处我的问题源于我的迁移。我没有“饮料id”或“用户id”列,一旦我添加,我就能够成功地选择最喜欢的饮料。我现在面临的问题是不能使这种饮料变质。当我单击unfavorite时,我得到一个“AssociationTypeClass”错误。我的代码已被修改,以显示我的更改。我现在在最喜爱的控制器中获得了一个“未知属性:用户id”。这一点都没有帮助。你改变了什么?如果你改变了什么,请更新你的问题。用我改变的内容更新。不太确定用户id来自何处我的问题源于我的迁移。我没有“饮料id”或“用户id”列,一旦我添加,我就能够成功地选择最喜欢的饮料。我现在面临的问题是不能使这种饮料变质。当我单击unfavorite时,我得到一个“AssociationTypeClass”错误。我的代码已被修改以显示我的更改
    
    # user.rb
    has_many :favorite_drinks
    has_many :drinks, through: :favorite_drinks
    
    # favorite_drink.rb
    belongs_to :user
    belongs_to :drink
    
    # drink.rb
    has_many :favorite_drinks
    has_many :users, through: :favorite_drinks
    
    @drink = Drink.find params[:drink_id]
    current_user.drinks << @drink
    
    @drink = Drink.find params[:drink_id]
    
    if type == "favorite"
      current_user.drinks << @drink
      redirect_to :back, notice: 'You favorites #{@drink.name}'
    elsif type == "unfavorite"
      current_user.drinks.delete(@drink)
      redirect_to :back, notice: 'You unfavorited #{@drink.name}'
    else
      redirect_to :back, notice: 'Nothing happened'
    end