2009-11-26 85 views
1

我有一個表單字段,用戶輸入聯繫信息,包括姓名,電子郵件等。如果他們已經保存了聯繫人,我想用他們保存的聯繫人下拉菜單。選擇下拉菜單中的聯繫人時,應使用該數據填充聯繫人字段以便於編輯。使用下拉列表和AJAX與Rails填充表格字段

出於某種原因,這種做法是不工作:

在我new.html.erb觀點:

<%= f.collection_select :id, @contacts, :id, :name, :onchange => 
remote_function(:url =>{:action => 'populate_contact_form'}, :with => 'id') %> 

在我的控制器:

def populate_contact_form 
raise "I am working up to this point" 
@contact = current_account.contacts.find(params[:id]) 
end 

在populate_contact_form.rjs:

page['contact_name'].value = @contact.name 
page['contact_email'].value = @contact.email 

似乎我的控制器方法從來沒有被稱爲...任何人都可以解釋如何做到這一點?

回答

1

它沒有被調用,因爲你正在使用remote_function不正確。如果這些選項中的任何一個從url選項丟失到remote_function,Rails會假定當前的action/controller/id/etc。您將作爲頂級選項傳遞給remote_function,並將其忽略。使用:url選項Rails假定呈現此視圖的操作和控制器相同。

這應該可以解決你的問題:

<%= f.collection_select :id, @contacts, :id, :name, :onchange => 
    remote_function(:url =>{:action => 'populate_contact_form'}, :with => 'id') %> 
+0

謝謝;我做了改變。但是,我的控制器功能仍然沒有被調用。我有其他語法問題嗎? – icecream 2009-11-27 17:39:55

+0

剩下要做的就是遵循日誌。 Firebug和你的服務器日誌都會捕獲服務器/ javascript返回的錯誤。 – EmFi 2009-11-27 20:48:17