我正在开发rails应用程序并且偶然发现了愚蠢但简单的问题。我需要通过触发javascript按钮来调用ruby方法。我有一个名为Book的控制器,我将方法放在BooksHelper中。我想要做的只是通过按钮点击触发执行此方法,这将在同一页面上输出结果,我不希望该方法打开另一个页面。我已经检查了几种可能的解决方案,但无法使它们工作。 example.html.erb中的所有方法都不起作用。我想获得如何解决问题的帮助。 它只有在我用警报方法结束时才有效,但这不是我想要的。我希望输出在实际页面中打印出来。那么,我该怎么做呢?我已经阅读了http://guides.rubyonrails.org/working_with_javascript_in_rails.html但它没有回答我的问题,因为我不是在寻找用控制器和路由创建新页面,而是在执行ruby方法以便在同一页面上查看结果。谢谢!
<%= button_to_function "Output", "alert('#{outputString}')" %>
----------------------------------------------------------------------------
#app/helpers/book_helper.rb
module BooksHelper
def outputString
"output"
end
end
-----------------------------------------------------
#app/controllers/books_controller.rb
class PagesController < ApplicationController
def outputString
end
end
------------------------------------------------------
#app/views/books/example.html.erb
<%= button_to_function "Print", "outputString" %>
<%= button_to "Print", :action => "outputString" %>
<input class="ok" onclick="outputString()" type="button" value="Print" />
答案 0 :(得分:1)
渲染模板后,控制器/辅助方法outputString
在客户端不可用。
button_to_function
用于通过按钮点击调用javascript函数。您无法直接从javascript按钮调用服务器端函数,而无需向服务器发回AJAX请求。