我创建了如下下拉菜单布局。
<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)" %>
然后我在我的 Controller 中创建了查找方法。
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>
我再次在 Controller 中创建了 find_search 方法。
def find_search
events=Event.find(:all, :conditions=>["venue = ?", params[:search_string]])
end
然后我创建了 View 页面。但是当我搜索某些东西时,它会给出异常。
事件中没有方法错误#find_search
显示第 10 行出现的 app/views/events/find_search.html.erb:
当你没想到它时,你有一个 nil 对象! 您可能期望 Array 的实例。 评估 nil.each 时发生错误
我该怎么办?谁能帮帮我>
最佳答案
不确定是不是这样——但下面这行有一个错误
if params[:is_delivery_address] == "1" || "2" || "3"
这将始终为真,因为 if params[:is_delivery_address] != "1"
那么结果将为 "2"(非零 - 即为真)。
尝试 irb 检查:
> params = {:is_delivery_address => "0" }
> params[:is_delivery_address] == "1" || "2" || "3"
=> "2"
关于ruby-on-rails - 我如何使用带有 Ajax 的下拉框在 Rails 中呈现部分内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092156/