私は RoR の初心者で、Rails 3.2.3 と Ruby 1.8.7 を使用しています。
このフォーラムは私が進歩するのに役立ちましたが、1 つのことで混乱しています。
私のアプリは、チェックされているチェックボックスに応じて結果を検索できるようになっています。私の場合、ユーザーが特定の施設をチェックして「検索」をクリックすると、それらの施設のみを含む対応するホテルが返されるはずです。
名前・場所、レーティングで検索できるのですが、施設が検索できません。
簡単に言うと、私のコントローラーは次のようになります。
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>
私のホテルと施設は、すべてが機能している has_many_and_belongs_to 関係です。ファシリティ ホテル テーブルは、ファシリティ ID 列とホテル ID 列で作成され、ファシリティ テーブルには、ファシリティ ID と説明 (プール、24 時間ルーム サービスなど) の列があります。
問題は私のモデルにあります:
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でこれをやりたくなかった...
また、それを実行すると、施設のチェックボックスをオンにすると、クエリは常に空の結果を返しますが、それは私のモデルのコード行の問題かもしれませんが、問題を予見する場合は、この問題に関連する将来のコードの競合
前もって感謝します