2011-10-06 44 views
0

我有一個模態對話框,其中包含搜索字段。當我從下拉列表中選擇元素時,出現錯誤「元素爲空」。無法理解爲什麼我得到這個錯誤。以下是我的代碼。元素在rails中爲null?

<%= label_tag :Search_by %> 
<select name="search" id="search" > 
    <option value="0">Trainer</option> 
    <option value="1">Venue</option> 
    <option value="2">Country</option> 
</select> 

<div id="div_to_be_updated" style="float:right"> 
</div> 

<%= observe_field 'search', :update => 'div_to_be_updated',:url => {:controller => 'events', :action=> 'pop_up_search' }, :with => "'is_delivery_address=' + escape(value)" %> 

控制器代碼::

def pop_up_search 
    @trainers= Trainer.all 
    @countries= Country.all 

    if ["0"].include?(params[:is_delivery_address]) 
    render :partial => 'layouts/pop_up_trainer_search' 
    else 
    if ["1"].include?(params[:is_delivery_address]) 
     render :partial => 'calendar/pop_up_venu_search' 
    else 
     render :partial => 'layouts/pop_up_country_search' 
    end 
    end 
end  

_pop_up_trainer_search.html.erb

<span style="text-align: right"> 
    <% form_tag "/calendar/pop_up_trainer_view" do %> 
     <%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => true}) %> 
     <%= submit_tag "search" %> 
    <% end%> 
</span> 

爲什麼我得到這個錯誤?任何人都可以幫我糾正這個問題嗎?

+1

請發佈整個異常回溯 –

+0

查看您的日誌,以確切瞭解JS觀察者正在調用什麼url(和args)。 –

+0

我只收到錯誤:元素爲空 源文件:http:// localhost:3000/javascripts/prototype.js?1315993754 行:3588在我的錯誤控制檯。而且我的日誌文件也是空的。我該怎麼辦? – Rosh

回答

0

聽起來像你的錯誤發生在客戶端,而不是服務器端。

這意味着您的JS存在問題。

這意味着observe_field沒有變成好的JS。

建議

檢查你的web頁面的源代碼,因爲它是從服務器發送。

  • 看看正在觀察#search元素的Javascript。
  • 檢查是否有與搜索ID
  • 使用螢火蟲或其他JS調試器遵循的Javascript流沒有其他元素時,選擇欄

新增由於它的工作原理是選擇一個新的值當在主要erb中,但不彈出erb時,有幾個想法:

  1. 不要在彈出窗口中重新使用search id。它應該是一個獨特的dom元素。處理這個問題的方法不同,一個是隱藏,而不是破壞彈出窗口。
  2. 確認在創建彈出對話框時正在調用JS。 - 添加一個警報聲明並查看它是否被評估。
  3. 它是否在第一次創建對話框時工作,但不在以後的時間?
  4. JS調試器是你的朋友。用它仔細看看瀏覽器上發生了什麼。 Rails JS機器應該運行JS,但部分可能存在問題。
+0

@Rosh,現在我們正在某個地方。往上看。 –

0

建議:

  • 檢查你的JS在Firebug控制檯

  • 請問你的表單標籤是什麼樣子?你有一個:url設置是否正確?

  • 是你的:參數是否正確?

  • 當您引用DIV時,您可以嘗試使用符號而不是字符串嗎?例如:搜索,:div_to_be_updated

    <%=的observe_field:搜索,:更新=>:div_to_be_updated,:URL => {:控制器=> '事件', :動作> 'pop_up_search'},:與=> 「 'is_delivery_address =' +逃生(值)」 %>

  • 怎麼做你PARAMS的樣子,當你調用你的pop_up_search()

  • 確實,當你在Firebug看DIV div_to_be_updated存在?

+0

:帶參數是正確的。我改變了我的div_to_be_updated,它存在。但沒有任何改變。它仍然給錯誤。 – Rosh