Ruby on rails 如何不喜欢RubyonRails中的项目

Ruby on rails 如何不喜欢RubyonRails中的项目,ruby-on-rails,ruby,Ruby On Rails,Ruby,这是我的密码 我喜欢的代码正在工作,但不喜欢的代码不工作,请给我一个解决方案 这是我的index.html.erb product.id),类:'fav_icon',:title=>“Like”,方法::post%> product.id),类:'unav_icon',:title=>“不喜欢”,方法::delete%> 我的爱好 class-LikesController

这是我的密码 我喜欢的代码正在工作,但不喜欢的代码不工作,请给我一个解决方案 这是我的index.html.erb


product.id),类:'fav_icon',:title=>“Like”,方法::post%>
product.id),类:'unav_icon',:title=>“不喜欢”,方法::delete%>

我的爱好

class-LikesController
Like.where(user\u id:current\u user.id,product\u id:params[:id])。首先创建
重定向到:返回,注意:“你喜欢这个产品!”
其他的
将_重定向到:back,alert:“您需要登录到类似的产品!”
结束
结束
def销毁
@like=like.find(参数[:id])
@破坏
回应待办事项|格式|
format.html{redirect_to:back,注意:'您取消了该项的链接。'}
结束
结束
结束

model like.rb

类类似于

model user.rb

有很多:喜欢
有很多:喜欢的产品,通过::喜欢,来源::产品
你喜欢什么?产品
您喜欢的产品包括哪些?产品
结束

模型产品.rb

有很多:喜欢改变这个

def destroy
  @like = Like.find(params[:id])
  @like.destroy
  respond_to do |format|
    format.html { redirect_to :back, notice: 'You unliked the item.' }
  end
end
对此

def destroy
  if user_signed_in?
    @like = Like.where(user_id: current_user.id, product_id: params[:id]).first
    if @like.present?
      @like.destroy
      redirect_to :back, notice: 'You unliked item.'
    else
      redirect_to :back, alert: 'You have no liked item.'
    end
  else
    redirect_to :back, alert: 'You need to be logged in to like product!'
  end
end

使用四个空格缩进代码,请看我建议添加before\u filter/before\u action,具体取决于检查用户登录的rails版本?这样,您的操作会更干净。对不起,我刚才这么说是因为我在“创建和删除”(我添加的)中看到了这个检查
if user\u signed\u in?
。如果您已经添加了这是最好的,您不需要显式检查。