好的,我能够通过搜索克服这座山,并让结果正确显示。但是,我注意到只有一个搜索选项有效。其余部分给出了“'nil' 不是返回有效部分路径的 ActiveModel 兼容对象”。即使我将编码恢复到旧版本。这很奇怪,因为我的搜索非常适合 Ethnicity,但对于表单的其他部分,它会返回该错误。也许一些新鲜的眼睛可以抓住罪魁祸首。
在我的高级搜索页面上澄清。如果我进行种族搜索,结果会出现。如果我进行任何其他搜索,例如宗教、性别、儿童等,它会给出零错误。搜索页面中的一个选项有效,而当所有选项都具有相同的编码时,其余选项无效,这是没有意义的。似乎它没有为它找到用户。错误指向“ 3 <%= render @users %>”
显示.html:
<h1>Search Results</h1>
<%= render @users %>
搜索控制器:
def new
@search = Search.new
end
def create
@search = Search.new(params[:search])
if @search.save
redirect_to @search
else
render 'new'
end
end
def show
@search = Search.find(params[:id])
@users = @search.users
end
end
搜索型号:
attr_accessible :age, :children, :ethnicity, :gender, :religion, :zip_code
def users
@users ||= find_users
end
private
def find_users
users = User.order(:id)
users = users.where(gender: gender) if gender.present?
users = users.where(zip_code: zip_code) if zip_code.present?
users = users.where(children: children) if children.present?
users = users.where(religion: religion) if religion.present?
users = users.where(ethnicity: ethnicity) if ethnicity.present?
end
end
搜索表格(底部显示的种族没有错误):
<h1>Advanced Search</h1>
<%= form_for @search do |f| %>
<div class="field">
<%= f.label :gender %><br />
<%= f.select :gender, ['man', 'woman'], :include_blank => true %>
</div>
<div class="field">
<%= f.label :zip_code %><br />
<%= f.text_field :zip_code %>
</div>
<div class="field">
<%= f.label :children %><br />
<%= f.select :children, ['Yes, they live with me', 'I want kids now', "I want one someday", "Not for me"], :include_blank => true %>
</div>
<div class="field">
<%= f.label :religion %><br />
<%= f.select :religion, [["Agnostic", "1"], ["Atheist", "2"], ["Christian", "3"], ["Catholic", "4"], ["Buddhist", "5"], ["Hindu", "6"], ["Jewish", "7"], ["Muslim", "8"], ["Spiritual without affiliation", "9"], ["Other", "10"], ["None", "11"], ["Prefer not to say", "12"]], :include_blank => true %>
</div>
<div class="field">
<%= f.label :ethnicity %><br />
<%= f.select :ethnicity, [["Asian", "1"], ["Biracial", "2"], ["Indian", "3"], ["Hispanic/Latin", "4"], ["Middle Eastern", "5"], ["Native American", "6"], ["Pacific Islander", "7"], ["White", "8"], ["Other", "9"]], :include_blank => true %>
</div>
<div class="actions"><%= f.submit "Search" %></div>
<% end %>