我是 RoR 的初学者,正在使用 rails 3.2.3 和 ruby 1.8.7
这个论坛帮助我进步,但我对一件事感到困惑。
我的应用程序应该允许根据选中的复选框搜索结果。就我而言,当用户检查确定的设施并单击“搜索”时,应返回仅具有这些设施的相应酒店。
我可以按名称/位置和评级搜索,但无法搜索设施。
简而言之,我的控制器看起来像:
def index
@hotels= Hotel.search(params)
(...)
end
我的看法是:
<b>Facilities:</b><br />
<% for facility in Facility.find(:all) %>
<div class="field">
<%= check_box_tag "fc[]", facility.id%>
<%= facility.description %>
</div>
<% end %>
<%= submit_tag "Search", :name => nil%>
(...)
<% @hotels.each do |hotel|%>
<h2> <%= link_to hotel.name, hotel %> </h2>
我的酒店和设施与一切正常运转有着密切的关系。facility_hotels 表是使用 facility_id 和 hotel_id 列创建的,设施表中的列有 facility_id 和描述(例如游泳池、24hroom 服务等)
问题出在我的模型中:
def self.search(params)
if params
arel = where('#searches for names/location/rating')
if params[:fc].present?
arel=arel.joins('INNER JOIN facilities_hotels ON hotels.id=facilities_hotels.hotel_id ')
for i in params[:fc].size
arel=arel.where('facilities_hotels.facility_id = ?', params([:fc][i]))
#how do I increment on the previous line? Obviously params([:fc][i]) does not work
end
arel
else
arel
end
else
all
end
我不想用 to_sql 做这个......
此外,当我运行它时,如果我选中设施复选框,查询总是返回空结果,但这可能是我模型中那行代码的问题,但如果你预见到问题,我会很感激与此问题相关的未来代码冲突
先感谢您