現在、Ruby on Railsを使用して服のお気に入り登録・削除ボタンを作成中です。
model,controller,viewの実装を済ませて実際動かしてみるとお気に入り登録はできるが、削除ができない状況です。
削除ボタンを押すとcontrollerのアクションが実行されず直接viewに飛んでいる感じです。
どこが間違っているんでしょうか。ご回答よろしくお願いします。
↓owners_controller
class OwnersController < ApplicationController protect_from_forgery def create @huku=Huku.find(params[:huku_id]) if params[:type] == "Like" now_user.like(@huku) flash[:success]="商品をLikeしました" end redirect_back(fallback_location: root_path) def destroy @huku = Huku.find(params[:huku_id]) if params[:type] == 'Like' now_user.unlike(@huku) flash[:success] = '商品の Like を解除しました。' end redirect_back(fallback_location: root_path) end end # 現在のユーザー def now_user @now_user=User.find_by(id: session[:user_id]) end end
↓_like_button.html.erb(このページから登録・削除を行います)
<% if current_user.like?(huku) %> <%= form_tag("owners/#{huku.id}", method: :delete) do %> <%= hidden_field_tag :huku_id, huku.id %> <%= hidden_field_tag :type, 'Like' %> <%= submit_tag 'UNLIKE', style:"background-color:#444444;color:white;padding:2% 5% 3% 5%;border-style:none;font-weight:600;"%> <% end %> <% else %> <%= form_tag(owners_path) do %> <%= hidden_field_tag :huku_id, huku.id %> <%= hidden_field_tag :type, 'Like' %> <%= submit_tag 'LIKE ',style:"padding:2% 5% 2% 5%;border-style:none;font-weight:600;" %> <% end %> <% end %>
↓user.rb(登録・削除のメソッドを定義しています)
class User < ApplicationRecord before_save { self.email.downcase! } validates :name, presence: true, length: { maximum: 50 } validates :email, presence: true, length: { maximum: 255 }, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i }, uniqueness: { case_sensitive: false } has_secure_password mount_uploader :picture,PictureUploader has_many :owners has_many :hukus, through: :owners has_many :likes has_many :like_hukus, through: :likes, source: :huku def like(huku) self.likes.find_or_create_by(huku_id: huku.id) end def unlike(huku) like = self.likes.find_by(huku_id: huku.id) like.destroy if like end def like?(huku) self.like_hukus.include?(huku) end end
↓routes.rb
Rails.application.routes.draw do get 'owners/create' get 'owners/destroy' get 'hukus/index' get 'hukus/show' get 'hukus/new' get 'hukus/create' get 'sessions/new' get 'sessions/create' get 'sessions/destroy' get 'users/show' get 'users/new' get 'users/create' root to:"toppages#index" get "/", to: "toppages#index" get "login",to:"sessions#new" post "login",to:"sessions#create" get 'out', to: 'sessions#destroy' get 'top', to:"toppages#index" get "signup", to:"users#new" resources :users, only: [:show, :new, :create] get "manage", to: "hukus#index" get "newitem", to: "hukus#new" resources :hukus, only: [:index, :show, :new, :create, :edit, :update] get "internal", to: "hukus#login" post "match", to:"hukus#match" resources :owners, only: [:create, :destroy] end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/14 06:04
2019/10/14 06:10