youtubeのような「後で見る」機能を多対多の関連づけを行おうとしています。
###前提・実現したいこと
多対多の関連づけを実装したいです。
###エラー内容
NameError in Microposts#show uninitialized constant Micropost::Safe #クリップしているかどうかを、返すメソッド def saved_by? user saves.where(user_id: user.id).exists?←★エラー箇所★ end
同様の機能を別名で実装済みですので、
書き損じかなと考え、見直したのですが見当たりませんでした。
またエラー内容でSafeというモデルは存在しないのでここが原因であるかと思ったのですが、さがしだせませんでした。。。
私が用意したモデルはSaveです。
###実行手順
①中間テーブル作成
②中間テーブルにインデックスを追加
③データベース作成
④能動的関係について多対多の関連づけ
⑤中間テーブルについて多対多の関連づけ
⑥受動的関係について多対多の関連づけ
⑦受動的関係について能動的データの存在チェックメソッド作成
⑧ルーティング設定
⑨中間モデルのコントローラーを作成
⑩コントローラーにメソッド作成
⑪ajaxファイル、リンクファイルを作成
⑫リンクを表示
⑬users_controllerにメソッド追加
###ソース
【micropost.rb】
has_many :saves, dependent: :destroy
【user.rb】
has_many :saves, dependent: :destroy
【save.rb】
belongs_to :user belongs_to :micropost validates :user, presence: true validates :user_id, uniqueness: { scope: :micropost_id } validates :micropost, presence: true
【_save_links.html.erb】
<% if micropost.saved_by? current_user %>←★micropost.rbへ★ <%= link_to "クリップ(User-to-Shop)をやめる", micropost_saves_path(micropost.id), method: :delete, :id => "saves_ajax_#{micropost.id}", remote: true %> <% else %> <%= link_to "クリップ(User-to-Shop)", micropost_saves_path(micropost.id), method: :post, :id => "saves_ajax_#{micropost.id}", remote: true %> <% end %>
【micropost.rb】
def saved_by? user saves.where(user_id: user.id).exists?←★エラー箇所★ end
###ログ
ActionView::Template::Error (uninitialized constant Micropost::Safe): 1: <% if micropost.saved_by? current_user %> 2: <%= link_to "クリップ(User-to-Shop)をやめる", micropost_saves_path(micropost.id), method: :delete, :id => "saves_ajax_#{micropost.id}", remote: true %> 3: <% else %> 4: <%= link_to "クリップ(User-to-Shop)", micropost_saves_path(micropost.id), method: :post, :id => "saves_ajax_#{micropost.id}", remote: true %> app/models/micropost.rb:98:in `saved_by?' app/views/saves/_save_links.html.erb:1:in `_app_views_saves__save_links_html_erb__1116921635009128905_54780520' app/helpers/users_helper.rb:75:in `user_saves' app/views/microposts/_link.html.erb:10:in `_app_views_microposts__link_html_erb___1313612887524713522_49694880' app/views/microposts/show.html.erb:31:in `_app_views_microposts_show_html_erb__172594646965366599_53457720'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/26 09:46