前提・実現したいこと
いいねを押すと適切な投稿のIDを取得し、データに保存したい。
わからないこと
一覧ページにおけるreview_idの取得の仕方
一覧ページの投稿に対していいねをする時、その投稿のidを含めてデータに保存する方法
ルーティングにおけるコードの書き方 ー
like と review がルーティングで独立してるのは気がついているのですが、
できれば resources を使いたいと考えています。
それが不可ならuriパターンでの指定を教えていただけると幸いです。
該当のソースコード
ruby
1class LikesController < ApplicationController 2 def create 3 @like = Like.new(user_id: current_user.id, review_id: id) 4 @like.save 5 redirect_to reviews_path 6 end 7end
ruby
1Rails.application.routes.draw do 2 root to: 'static_pages#home' 3 devise_for :users 4 resources :reviews, only: [:index, :new, :create, :show] 5 resources :likes, only: [:create, :destroy] 6end
ruby
1class ReviewsController < ApplicationController 2 before_action :authenticate_user! 3 before_action :move_to_signin 4 5 def index 6 @reviews = Review.all 7 end 8 9 def new 10 @review = Review.new 11 end 12 13 def create 14 @review = Review.new(review_params) 15 if @review.save 16 redirect_to reviews_path 17 else 18 render :new 19 end 20 end 21 22 def show 23 @review = Review.find_by(id: params[:id]) 24 end 25 26 private 27 def review_params 28 params.require(:review).permit(:title, :content, :image).merge(user_id: current_user.id) 29 end 30end
haml
1-# index.html.haml 2%h1 Reviews#index 3- @reviews.each do |review| 4 .Cover 5 = link_to review_path(review) do 6 = image_tag "#{review.image}" 7 = link_to('いいね', reviews_path, method: :post) 8= link_to('review', new_review_path) 9= link_to('logout', destroy_user_session_path, method: :delete)
試したこと
ルーティングのネストを変える
回答1件
あなたの回答
tips
プレビュー