ruby-on-rails - 如何在 Rails 中设置点赞按钮

标签 ruby-on-rails ruby ajax ruby-on-rails-5

您好,我有一个锻炼应用程序,用户应该能够喜欢某些产品。 我可以找到一种方法来显示他喜欢的产品,但我真的不知道如何创建和使用喜欢按钮。 我没有使用任何 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/

相关文章:

ruby-on-rails - 如何在 ruby​​ on rails 中添加速率限制器?

jQuery $.get(异步)大文件阻止浏览器

jquery - 在服务器中创建文件后使用 jQuery 下载文件

javascript - 使用普通 JS Promise 编写 jQuery AJAX 请求

ruby-on-rails - PG::错误:错误: ""处或附近的零长度定界标识符“”

ruby-on-rails - 从枚举模型中设置 Rails 表单隐藏字段

ruby - 不使用字符串文字时的字符串插值

ruby-on-rails - Rails、强大的参数和复杂的数据结构

ruby-on-rails - 工厂(:some_factory) or FactoryGirl. 创建(:some_factory)

ruby-on-rails - `babel-loader` 在生产中时出现 `rake assets:precompile` 依赖错误