2012-10-28 43 views
1

我想在rails中調用一個ruby函數。我跟着this question,但我得到重定向到從rails調用ruby函數 - 它需要一個我不想要的視圖

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"} 
+0

這個問題可以幫到更多嗎? http://stackoverflow.com/questions/4605837/rails-3-call-functions-inside-controllers – jab

+0

控制器代碼?查看代碼? – shime

+0

@ jab9bansai9它做了 - 修改了問題 – cauchy

回答

1

所以,從我可以告訴。我想你想製作一個按鈕,它會向控制器發送一個AJAX/HTTP請求,以便調用一個函數,該函數在完成時不會返回一個HTML文件。

爲了做到這一點,您必須執行以下操作。

1.)爲這個調用設置HTTP路由,這是在config/routes.rb文件中。

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

這允許您的應用程序通過以下URL來引導任何HTTP請求,以在控制器中調用您的方法。由於:action =>「my_func」參數,您的button_to方法將使用該URL發送此調用。

2.)另外包括:遠程=>真,:形式=> { 「數據類型」=> 「JSON」}作爲多個參數到button_to方法。

這將從一個一般傳統的HTTP請求經由AJAX請求的HTTP請求轉換的按鈕。

讓我知道如何工作的,我認爲有替代品在這種情況下使用AJAX,如果它的一個非常簡單的方法,那麼你可以或許查看ERB中包含它。

+2

這裏有一些很好的鏈接 http://guides.rubyonrails.org/ajax_on_rails.html http://stackoverflow.com/questions/3757380/ruby-on-rails-no-路線匹配 – jab

+0

是的,那正是我想要的。我開始閱讀關於AJAX的內容,後來又深思熟慮,認爲Rails不需要其他參數。它現在抱怨缺少模板。我會過去的。 – cauchy

相關問題