使用下拉列表和使用Rails的AJAX填充表单字段

时间:2009-11-26 23:00:32

标签: ruby-on-rails ajax

我有一个表单字段,用户可以在其中输入联系信息,包括姓名,电子邮件等。如果他们已经保存了联系人,我希望下载其已保存的联系人。当选择下拉列表中的联系人时,应使用该数据填充联系人字段,以便于编辑。

出于某种原因,这种方法无效:

在我的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 个答案:

答案 0 :(得分:1)

因为你错误地使用了remote_function而没有被调用。如果从remote_function的:url选项中缺少任何这些选项,则Rails会假定当前操作/ controller / id / etc。你传递的是:action作为remote_function的顶级选项,它会被忽略。使用:url选项Rails采用与呈现此视图相同的操作和控制器。

这可以解决您的问题:

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