从rails调用ruby函数 - 它需要一个我不想要的视图

时间:2012-10-28 20:53:41

标签: ruby-on-rails

我想在rails中调用ruby函数。我跟着this question,但我被重定向到

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

应用程序/视图/公共/ home.html.erb

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

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

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

1 个答案:

答案 0 :(得分:1)

所以,从我所知道的。我想你想创建一个按钮,它将向Controller发送一个AJAX / HTTP请求,以便调用一个函数,该函数在完成时不会返回HTML文件。

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

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

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

这允许您的应用程序使用以下URL指示任何HTTP请求,以在控制器中调用您的方法。由于以下操作,您的button_to方法将使用该网址发送此调用:action =&gt; “my_func”param。

2。)还包括:remote =&gt; true,:form =&gt; {“data-type”=&gt; “json”}作为button_to方法的更多参数。

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

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