我正在開發rails應用程序,並且偶然發現了一個愚蠢而又簡單的問題。我需要通過觸發javascript按鈕來調用ruby方法。我有一個名爲Book的控制器,我在BooksHelper中放置了一個方法。我想要做的只是通過按鈕單擊來觸發執行此方法,這會在相同的頁面上輸出結果,我不希望該方法打開另一個頁面。我已經檢查了幾個可能的解決方案,但不能讓它們工作。 example.html.erb中沒有任何方法實際工作。我想獲得如何解決問題的幫助。 它只適用於如果我包裝在警報方法,但這不是我想要的。我希望輸出在實際頁面中打印出來。那麼,我該怎麼做呢?我已閱讀http://guides.rubyonrails.org/working_with_javascript_in_rails.html,但它不回答我的問題,因爲我不想用控制器和路由創建新頁面,而是執行ruby方法以便在同一頁面上查看結果。謝謝!通過Javascript調用rails 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" />
那麼,這個問題只能通過AJAX解決?沒有其他選擇?我不知道AJAX不幸的是,猜猜現在就得學會它..謝謝! – user2928354
@ user2928354,是的,你正在看[遠程過程調用](http://en.wikipedia.org/wiki/Remote_procedure_call)。而且,它使用AJAX。 – naomik
是的,看起來就像Rails代碼是服務器端,視圖呈現並執行客戶端。所以當這個html被髮送到客戶端(瀏覽器),並且他們點擊它們在客戶端的按鈕時,他們就不能訪問服務器端代碼中只存在於服務器上的函數。 – cpjolicoeur