favoritesお気に入り機能 メモ

引数と式を.rb fileで定義

HAMLで代入する値を入れて、式を使う。

このときquestionと連携させたかったので、その引数も"user"のほかにつける必要があった。

HAML;

-if @question.favorited_by?(current_user, @question)
= link_to "お気に入りを解除", question_favorites_path(@question), method: :delete
-else
= link_to "お気に入りに登録", question_favorites_path(@question), method: :post
= link_to "編集", edit_question_path(@question), :class => "a edit btn btn-primary float_right"

 

 

Favorites.rb;
def favorited_by?(user, question)
Favorite.where(user_id: user.id).where(question_id: question.id).exists?
end

 

Controller;

class FavoritesController < ApplicationController
before_filter :require_login

def create
@question = Question.find(params[:question_id])
@favorite = current_user.favorites.build(question_id: @question.id)
if @favorite.save
redirect_to question_path(@question), notice: "お気に入りに追加しました"
else
redirect_to question_path(@question), alert: "この質問はお気に入りに登録できません"
end
end

def destroy
@favorite = current_user.favorites.find_by!(question_id: params[:question_id])
@favorite.destroy
redirect_to questions_url, notice: "お気に入りを解除しました"
end
end