【问题标题】:Rails: How to execute function using a button without reload pagesRails:如何使用按钮执行功能而不重新加载页面
【发布时间】:2014-04-14 10:23:47
【问题描述】:

好吧,也许以前有人问过这个问题,但我找不到我的问题的正确答案…… 我有一个表,其中包含使用 each/do 收费的数据,表中的每个项目都有一个按钮,可以将该项目添加到另一个应该在同一页面中看到的表中,但在第一个表上方。 当我单击按钮时,它会执行操作,但问题是重新加载页面。 在不重新加载页面并实时进行更改的情况下,我该怎么做才能执行此操作???

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby


    【解决方案1】:

    您必须为此使用 Ajax。由于您没有提供任何代码,我将给您伪代码来描述这个想法。

    在控制器中创建一个描述您的行为的操作。这个动作必须响应 JS。

    def do_something
      do_stuff
      respond_to do |format|
        format.html { #handle HTML, i.e. full page reload }
        format.js # handle ajax request
      end
    end
    

    然后您需要创建一个 js 模板来呈现您的操作结果。您将呈现 JavaScript。所以创建一个名为do_something.js.erb 的模板。此模板将包含用于实现您描述的行为的 JavaScript 代码以及任何 Ruby 代码。

    不要忘记为您的操作创建路线。此外,根据您希望如何实现该方法,您需要将远程选项传递给您的表单或链接。如果您使用的是链接,您还需要传递 method 选项。

    例如:

    = form_for @object, remote: true
    

    或者

    = link_to "Do Something", do_something_path, remote: true, method: :patch # or post, or put
    

    【讨论】:

    【解决方案2】:

    您可以通过使用 ajax 来实现这一点。您可以自己编写 js 代码,全部使用按钮的remote: true 选项。如果你使用remote: true 选项,rails 会发送一个 ajax 请求,而你的响应应该是 js。

    例子:

    respond_to do |format|
      format.html
      format.js # this one handle the request comes from `remote: true` button
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多