2012-03-12 56 views
0

我正在尝试为<select>框设置AJAX事件,该框会在选择更改时执行一些操作。该选择框表的<td>标签内嵌入里面Rails AJAX选择框

<td> 
    <%= form_tag '', { :id => 'test_form' } do %> 
    <select name='repo' value="<%= session[:repo] %>" > 
     <option></option> 
     <%@repos.sort! { |a,b| a.repo <=> b.repo } 
      @repos.each do |r| %> 
      <option <%= session[:repo]==r.repo ? "selected='repo'" : '' %>> 
       <%=URI.escape(r.repo)%> 
      </option> 
     <% end %> 
    </select> 
    <% end %> 

    <%= observe_form('test_form', :frequency => 2, 
    :update => 'update_results', 
    :url => {:action => :update_report, :page => 0, :update => 1 }, 
    :loading => "$('res_spin').show()", :complete => "$('res_spin').hide()") %> 
</td> 

我已经嵌入形式的选择框和observe_form方法来侦听选择更改。我的控制器功能是update_report,当选择改变时它会做某些事情。出于某种原因,当选择改变时,控制器功能根本不会被调用。

原来的 “萤火虫”,看到这个错误很多次

$(form) is null 
    var elements = $(form).getElementsByTagName('*'), 
+0

敲定其中的问题是我会建议评论所有的逻辑,只是一个点击事件,显示一个弹出框。这表明你的听众正在工作。如果这样做有效,那么你的逻辑出问题了。 – Josh 2012-03-12 21:28:08

回答

0

尝试observe_field(如讨论here):

<%= observe_field(:state, :url => { :action => :update_report, :page => 0, :update => 1 }, :update => :update_results, :with => 'repo' ) %>

+0

仍然不起作用。有趣的是,我在其他地方使用相同的代码,它工作得很好。这里唯一的区别是form_tag嵌入了​​标签。 – Vignesh 2012-03-12 22:01:10

+0

你可以发布输出吗?我认为你的表单标签有问题。 – 2012-03-13 18:11:03

+0

啊哈。 html输出中没有表单标签。我只看到​​标签,里面没有表格标签。这是为什么? – Vignesh 2012-03-13 21:40:06