Ruby on Rails - 仅在单击链接时运行Ruby File.open

时间:2016-12-03 12:33:19

标签: ruby file ruby-on-rails-4 link-to

在我的应用程序中,我有public class Child extends Parent{ @override protected Object doSomething(){ return new Object(); } } 我用于投票目的。如果link_to或不{。}},此link_to会执行不同的操作。

当用户 IS 登录时,他们可以投票,否则会打开一个模式,以便注册或登录

我想要实现的是计算有多少用户在投票按钮上点击但由于注册而没有投票。

我正在考虑进行简单的user_signed_in?操作,并为每次点击添加 1 ruby

这是我的链接:

date

当用户登录时,一切正常,但是当我想要运行时: = link_to_unless has_voted?(@image.id, 1), (image_tag 'vote/thumb-up.png'),user_signed_in?? vote_image_path : File.open("public/count.txt", "a+") { |file| file.puts ([1, Date.today]).join }, data: {target: user_signed_in?? "" : "#login-modal", toggle: user_signed_in? ? "" : 'modal'}, remote: true 当事情出错时。

这会添加数字,但只有在点击File.open("public/count.txt", "a+") { |file| file.puts ([1]).join }时才会将数字添加到count.txt文件,而是为每次访问/刷新添加1

如何link_to仅在File.open("public/count.txt", "a+") { |file| file.puts ([1]).join } 点击时运行,而不是在每次访问/刷新时运行。

我一直在考虑制作一个link_to并在那里添加route并重定向回来,但后来我无法打开注册模式,同时我不想刷新页面然后向后发送用户。

1 个答案:

答案 0 :(得分:0)

对我而言似乎非常适合server-generated JavaScript responses

总结这个概念:

  • 创建一个触发AJAX请求到服务器的链接(link_to使用remote: true
  • 让服务器决定是否计算投票数或增加投票但未登录的计数器并显示模态。基于此,它将生成将在客户端上执行的相应JavaScript
  • 客户端收到JavaScript响应并执行它

您决定是否已从一开始就加载模态功能,服务器只返回showLoginModal();或服务器响应是否包含整个JavaScript来创建模态。