質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1402閲覧

いいね一覧を表示したいがno method errorが出てしまう

renren643

総合スコア279

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/10/16 12:40

このサイトを見ながら、act_as_votableでいいね一覧を表示しようとしているのですが、no method errorが出てしまいます。

イメージ説明

routes.rb↓

resources :songs do member do put "like", to: "songs#upvote" get 'like', to: "songs#like" end resources :comments do member do put "good", to: "comments#upvote" end end end

songs.controller ↓

def like @songs = current_user.votes.up.for_type(User).votables end
<%= @songs.each do |song| %> <%= song.title%> <% end %>

そもそも「votes.up.for」とはどこからきたのでしょうか?
スキーマを見てもそのようなものは見当たりません。

create_table "songs", force: true do |t| t.string "title" t.text "body" t.datetime "created_at" t.datetime "updated_at" t.integer "user_id" t.integer "get_upvotes" t.integer "cached_votes_total", default: 0 t.integer "cached_votes_score", default: 0 t.integer "cached_votes_up", default: 0 t.integer "cached_votes_down", default: 0 t.integer "cached_weighted_score", default: 0 t.integer "cached_weighted_total", default: 0 t.float "cached_weighted_average", default: 0.0 end

教えていただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

acts_as_votableという名前のGemではないのでしょうか。

https://qiita.com/YutoYasunaga/items/7ba03180ab3d2d8473b8

上記が関連ページですね。

GemFileに

Ruby

1gem 'acts_as_votable' 2gem 'devise'

と追加することで、
投票する側のモデルに
acts_as_voter
投票される側のモデルに
acts_as_votable
と書くだけで、投票システムを実装できるGemのようですね。

(追記)
エラーメッセージを見ると、current_userにメソッドがないとあります。
current_userはUserモデルのインスタンスだと思われますが
Userモデルに

ruby

1acts_as_voter

は記述していますか。
これを記述することでインスタンスメソッドが追加されるようです。

https://github.com/ryanto/acts_as_votable

投稿2017/10/16 13:58

編集2017/10/16 14:40
ReiLeiLei1025

総合スコア236

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renren643

2017/10/16 15:04

回答ありがとうございます。acts_as_voterを追加することで、エラーは吐き出さなくなりました。 しかし、ビューで一覧が表示されません。理由がお分かりであれば教えていただきたいです。
ReiLeiLei1025

2017/10/17 12:24

Songモデルにレコードは存在しているのでしょうか? また、viewsは適切な場所にあるのでしょうか? app/views/songs/like.html.erb などのように。
renren643

2017/10/17 16:33

回答ありがとうございました @songs = current_user.votes.up.for_type(User).votablesの部分を@songs = current_user.votes.up.for_type(Song).votablesとすることで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問