Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为ruby方法添加事件侦听器?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何为ruby方法添加事件侦听器?

Ruby on rails 如何为ruby方法添加事件侦听器?,ruby-on-rails,Ruby On Rails,我想在一个按钮上实现一个事件侦听器,该按钮取决于用户是否登录?有没有一种方法可以将这些代码集成到rails中。例如,如果用户单击某个对象的“Love it”按钮并登录,则该对象的信息将保存到数据库中。如果他们没有登录,相同的“love it”按钮应该将他们重定向到登录表单。请尽可能详细。多谢各位 假设您在一篇文章中添加了“爱它”按钮 = link_to("Love It!", like_article_path(@article)) 现在在ArticleController中,在过滤器之前添加

我想在一个按钮上实现一个事件侦听器,该按钮取决于用户是否登录?有没有一种方法可以将这些代码集成到rails中。例如,如果用户单击某个对象的“Love it”按钮并登录,则该对象的信息将保存到数据库中。如果他们没有登录,相同的“love it”按钮应该将他们重定向到登录表单。请尽可能详细。多谢各位

假设您在一篇文章中添加了“爱它”按钮

= link_to("Love It!", like_article_path(@article))
现在在
ArticleController
中,在过滤器之前添加
,以强制执行身份验证要求(假设
您正在使用类似gem的
designe
进行身份验证)

class ArticleController当前用户)
结束
结束

听起来您需要在应用程序中添加一些JavaScript,以便让事件将信息发送回服务器。不幸的是,您的问题对于堆栈溢出来说太广泛了。我会稍微研究一下Javascript,然后回来问一个更具体的问题。
class ArticleController < ApplicationController    
  before_filter :authenticate_user!    
  def like
    @article = Article.find(params[:id])
    @article.likes.create(:user => current_user)
  end    
end