通过Javascript调用rails ruby​​方法

时间:2013-10-28 14:28:56

标签: javascript ruby-on-rails ruby

我正在开发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" />  

1 个答案:

答案 0 :(得分:1)

渲染模板后,控制器/辅助方法outputString在客户端不可用。

button_to_function用于通过按钮点击调用javascript函数。您无法直接从javascript按钮调用服务器端函数,而无需向服务器发回AJAX请求。