【问题标题】:Rails 4 Error: NoMethodError - undefined method `itemfavorites'Rails 4 错误:NoMethodError - 未定义的方法“itemfavorites”
【发布时间】:2016-09-24 14:42:29
【问题描述】:

嘿,我从我的ItemsController 访问@interestedusers = User.itemfavorites.where(item_id: @item.id) 时遇到问题:

NoMethodError in ItemsController#show
undefined method `itemfavorites' for #<Class:0xfb94bb8>

路线

resources :items do
    get :itemfavorites, on: :member
end

用户模型

# Favorite items of user
has_many :favorite_items # just the 'relationships'
has_many :itemfavorites, through: :favorite_item, source: :item # the actual items the user favorites

物品模型

# Favorited by users
has_many :favorite_items # just the 'relationships'
has_many :itemsfavorited_by, through: :favorite_items, source: :user # the actual users favoriting an item

一般关联有效,我对其进行了测试,我可以添加/删除和显示收藏夹。

我正在尝试显示用户收藏的项目。

提前感谢每个答案!如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 associations nomethoderror


    【解决方案1】:

    您在 User 类上调用 itemfavorites,而不是 User 实例。我猜你想做类似的事情

    @interestedusers = current_user.itemfavorites.where(item_id: @item.id)
    

    @interestedusers = @user.itemfavorites.where(item_id: @item.id)
    

    编辑:你想这样做是为了让用户获得一个项目:

    @interestedusers = @item.itemsfavorited_by
    

    【讨论】:

    • current_user 有效。问题是我想获得一个用户(模型)。用你建议的方式我得到一个项目(模型)
    • 获取用户?你什么意思?
    • 如果我要循环访问我的数据库的用户表,并且通过该解决方案我可以访问 Items 表:)
    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多