是否可以创建一个没有AJAX的类似按钮?

时间:2016-09-20 04:45:40

标签: ruby-on-rails ruby ajax

我正在构建我的第一个rails应用程序,并希望实现类似帖子的类似按钮。我可以找到的关于如何执行此操作的大多数资源都涉及使用AJAX。我想知道是否有办法在不使用AJAX的情况下实现类似的按钮?

3 个答案:

答案 0 :(得分:6)

以下是解决方案:会重新加载您的网页

  1. 我们说当前您所在的posts/index.html.erb页面上显示了所有posts,并且每个帖子中都有一个按钮。
  2. 创建一个名为LikeController.rb的新控制器,它将为帖子创建/删除喜欢的内容。在您的路线中,使其成为嵌套资源,例如:它可以更好地识别哪个帖子获得了类似按钮。

    resources :posts do resources :likes end

  3. 在新创建的控制器中创建两个方法createdelete

  4. 在您的帖子like按钮中,为通过create的{​​{1}}方法创建链接。
  5. post_id方法中为该帖子创建新的create。可以从您在类似链接中传递的Like找到帖子。
  6. 成功创建新params[:post_id]重定向至Like

答案 1 :(得分:0)

您可以使用Faye websockets向JavaScript文件发送类似请求,并将其更新为动态计数。观看有关Faye websockets的rails castcast,并尝试从您的视图中实现发送请求。我相信它会完成你想要的工作。

答案 2 :(得分:0)

你可以在没有Ajax的情况下做到这一点(虽然我不确定你为什么要施加这种约束)。

在页面上有一个不可见的iframe,并让你的喜欢按钮提交一个目标是iframe的表单。提交表单(即单击按钮)现在重新加载框架而不是整个页面。框架中的内容可以与主页通信(直接在window.parent上调用方法或使用postMessage),这样您就可以更新页面上的计数器等。