1

我想在 rails 中创建一个 ruby​​ 函数。我关注了这个问题,但我被重定向到

http://localhost:3000/my_func?arg=arg

我不想要。我只想在单击按钮时执行该功能,但保持在同一页面上!

编辑:

我修改了代码,或者更好的是,创建了一个临时站点来解决这个问题。我只做了:

rails new eraseme
cd eraseme
rails g controller public home

应用程序/控制器/公共/home.html.erb

class PublicController < ApplicationController
  def home
  end

  def my_func

  end
end

app/views/public/home.html.erb

<%= button_to "Button", {:action => "my_func", :arg => "arg"} %>

我想要做的是my_func单击按钮时执行。但是当我点击时,我得到

No route matches {:action=>"my_func", :arg=>"arg", :controller=>"public"}
4

1 回答 1

1

所以,据我所知。我认为您想制作一个按钮,该按钮将向控制器发送 AJAX/HTTP 请求以调用一个函数,该函数在完成时不会返回 HTML 文件。

为了实现这一点,您必须执行以下操作。

1.) 设置此调用的 HTTP 路由,这在 config/routes.rb 文件中。

match '/public/my_func' => 'public#my_func'

这允许您的应用程序使用以下 URL 引导任何 HTTP 请求以在控制器中调用您的方法。由于 :action => "my_func" 参数,您的 button_to 方法将使用该 URL 发送此调用。

2.) 还包括 :remote => true, :form => { "data-type" => "json" } 作为 button_to 方法的更多参数。

这会将按钮从传统的 HTTP 请求转换为通过 AJAX 请求的 HTTP 请求。

让我知道这是如何工作的,我认为在这种情况下使用 AJAX 有其他选择,如果它是一个非常简单的方法,那么您也许可以将它作为 erb 包含在视图中。

于 2012-10-28T22:11:35.547 回答