我想创建一个在rails中调用的ruby函数。我关注了this question,但我被重定向到
http://localhost:3000/my_func?arg=arg
我可不想这样。我只想在按钮被单击时执行函数,但仍然在同一页上!
编辑:
我修改了代码,或者更好的是,创建了一个scratch站点来解决这个问题。我只做了:
rails new eraseme
cd eraseme
rails g controller public home
应用程序/控制器/public/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"}
发布于 2012-10-28 22:11:36
所以,据我所知。我认为你想做一个按钮,它将发送一个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方法的更多参数。
这将通过AJAX请求将按钮从传统的HTTP请求转换为HTTP请求。
让我知道这是如何工作的,我认为在这种情况下有使用AJAX的替代方法,如果它是一个非常简单的方法,那么您也许可以将其作为erb包含在视图中。
https://stackoverflow.com/questions/13112929
复制相似问题