2012-03-12 80 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