2012-04-25 63 views
1

我想填充一個text_field點擊使用jQuery的按鈕,並有幾個問題。我發佈了關於這個問題在這裏,但不知道對所提供的答案,因爲它似乎過於複雜(這可能是正確的,但我曾與執行沒有運氣)...Ruby on Rails按鈕點擊使用jQuery填充text_field

Ruby on Rails jQuery button click populate text_field

確認的這樣做基督教在另一個問題或更簡單的方式提到的方式會很好,示例代碼將不勝感激。正如在另一個問題中提到的,我對ROR和jQuery都很陌生。

有關問題的一些詳細信息...

中的按鈕退出無論對新edit.html.erb,位於旁邊text_field一個的form_for塊(我有一個單獨的按鈕提交形成)。我希望能夠使用Ruby方法SecureRandom.urlsafe_base64來填充字段。

  1. 我正確使用button_tag嗎?
  2. 應該在哪裏找到javascript文件,我已經讀了一些關於這個和一些提到創建一個edit.js.erb文件,並讓控制器也響應JavaScript。然而,我對這個過程有點不確定,因爲在新的和編輯頁面中需要類似的功能,所以一個全局的jQuery函數會更好。
  3. 如果從控制器通過jQuery調用方法是正確的方法,有人可以提供一些示例代碼來說明如何完成這個任務,因爲我嘗試時沒有運氣。如果可以從js.erb文件中調用SecureRandom.urlsafe_base64,並且每次單擊該按鈕時都會更新該字段,這是理想的。

從另一個問題可以看出,我得到了一些工作,但現在我陷入了困境,現在變得非常絕望。

我將不勝感激任何幫助和示例代碼。

謝謝!

回答

1

我假設你有jQuery包含並已正確工作。爲了簡單起見,將這個javascript放在app/assets/javascripts/devices.js中。如果你這樣做了,確保你的application.js在同一個目錄中包含一個「// = require_tree。」(它將包含你剛剛創建的那個目錄中的所有文件)。首先,確保你包含「 application.js「在正在呈現的佈局中。 (可能是應用程序/視圖/佈局/ application.html.erb)

應用程序/資產/ Java腳本/ devices.js:

$(function(){ 
    $("#deviceIDbutton").click(function(e){ 
     $.get("/generate_device_id", function(data){ 
     $("#deviceIDfield").val(data); 
    }); 
    e.preventDefault(); 
    }) 
}) 

然後,添加路由,因此AJAX調用知道什麼控制器和行動打電話......

應用程序/配置/ routes.rb中

get '/generate_device_id', :to=>"devices#generate_device_id" 

然後,添加控制器動作,將調用你問...

SecureRandom的方法

應用程序/控制器/ devices_controller.rb

def generate_device_id 
render :text=>SecureRandom.urlsafe_base64 
end 
+0

非常感謝你爲這個!它現在每次點擊都在更新,但是有一個小問題,出於某種原因,該字段正在更新兩次,即當我點擊按鈕時ID改變,然後立即再次改變。有任何想法嗎? – user1344048 2012-04-25 16:35:31

+0

我設法通過在事件中添加stopImmediatePropagation()來解決這個問題,例如e.preventDefault();把e.stopImmediatePropagation();再次感謝miked!你已經度過了我的一天! – user1344048 2012-04-25 16:51:41