gpt4 book ai didi

ruby-on-rails - 如何在rails中设置一个like按钮

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:15 26 4
gpt4 key购买 nike

您好,我有一个锻炼应用程序,用户应该可以在其中为某些产品点赞。我可以找到一种方法来展示他喜欢的产品,但我真的不知道如何创建和制作喜欢按钮。我没有使用任何 gem,我不想了解如何从头开始。

这是我的模型:

class User < ApplicationRecord
has_many :likes
has_many :liked_products, through: :likes, source: :product
end

class Product < ApplicationRecord
has_many :likes
end

class Like < ApplicationRecord
belongs_to :user
belongs_to :product
end

在我的 View 产品展示中,我想要点赞按钮的位置:

<h1><%= @product.name %></h1>

<%= link_to "Like", product_likes_path(@product), method: :put, remote: true %>

我的路线:

Rails.application.routes.draw do
root to: 'visitors#index'
devise_for :users
resources :users

resources :products do
resource :likes
end
end

那是我的产品 Controller ,我认为东西必须进入这里,但我不知道如何进入!

class ProductsController < ApplicationController

before_action :find_product, only: :show

def index
@products = Product.all
end

def show
#@product.like => gives an error 404
end

private

def find_product
@product = Product.find(params[:id])
end
end

我已经创建了一个点赞 Controller ,但它似乎没有用......所以......我放弃了......

class LikesController < ApplicationController

def new
@like = Like.new(like_params)
end

def create
@like = Like.new(like_params)
end

private

def like_params
params.require(:likes).permit(:user_id, :product_id)
end

end

我真的很喜欢这个问题:)

最佳答案

终于知道怎么设置 Controller 了

class LikesController < ApplicationController

def create
@user = current_user.id
@product = params[:product_id]
likes = {user_id: @user, product_id: @product}
@like = Like.new(likes)

@like.save!
if @like.save
redirect_to user_path(@user)
else
redirect_to product_path
end
end


end

按钮

<%= link_to "Like", product_likes_path(@product), method: :post %>

路线

Rails.application.routes.draw do
root to: 'products#index'
devise_for :users

resources :users

resources :users do
resources :products do
resources :likes
end
end
end

关于ruby-on-rails - 如何在rails中设置一个like按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com