我有一个表单字段,用户可以在其中输入联系信息,包括姓名,电子邮件等。如果他们已经保存了联系人,我希望下载其已保存的联系人。当选择下拉列表中的联系人时,应使用该数据填充联系人字段,以便于编辑。
出于某种原因,这种方法无效:
在我的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
似乎我的控制器方法从未被调用过......任何人都可以解释如何做到这一点吗?
答案 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') %>