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