您好,我有一个锻炼应用程序,用户应该能够喜欢某些产品。 我可以找到一种方法来显示他喜欢的产品,但我真的不知道如何创建和使用喜欢按钮。 我没有使用任何 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 中设置点赞按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810456/