我創建瞭如下的下拉菜單佈局。如何使用帶有Ajax的下拉框在Rails中渲染部分內容?
<select name="search" id="search" >
<option value="0">Please select</option>
<option value="1">Name</option>
<option value="2">Trainer</option>
<option value="3">Venue</option>
<option value="4">Date</option>
</select>
<div id="div_to_be_updated" style="float:right"></div>
<%= observe_field 'search',
:update => 'div_to_be_updated',
:url => {:controller => 'events', :action=> 'find' },
:with => "'is_delivery_address=' + escape(value)" %>
然後我在我的控制器中創建了find方法。
def find
if params[:is_delivery_address] == "1" || "2" || "3"
render :partial => 'layouts/new_search'
else
render :partial => 'layouts/nothing'
end
end
然後我創建了部分名爲_new_search。
<span style="text-align: right">
<% form_tag "/events/find_search" do %>
<%= text_field_tag :search_string%>
<%= submit_tag "search" %>
<%end%>
</span>
我又在控制器中創建了find_search方法。
def find_search
events=Event.find(:all, :conditions=>["venue = ?", params[:search_string]])
end
然後我創建了查看頁面。但是當我搜索它時會發出異常。
NoMethodError在活動#find_search
顯示應用程序/視圖/事件/ find_search.html.erb其中第10行中提出:
你有一個零對象時,你沒想到吧! 您可能預期了Array的一個實例。 評估nil時發生錯誤012每分鐘
我該怎麼辦?任何人可以幫助我>
也提供了`app/views/events/find_search.html.erb`的代碼。 – rubyprince 2011-08-17 12:16:14
如果您計劃在view..events中使用該變量是一個局部變量並且無法在視圖中訪問,您應該在`find_search`方法中使用`@ events`而不是`events` ... – rubyprince 2011-08-17 12:29:13