2014-09-19 68 views
0

填充日期視圖代碼:如何在每個循環

<% @hotels.each do |h| %> 
<%= h.hotel_Name%><% @hotelName=h.hotel_Name%> 
<%= image_tag h.hotelImage_url,:size=>'160x120'%> 
<%= image_tag('1407945135.png',:size=>'20x20',:alt=>'Logo')%> 
<%= h.hotel_location%> 
<%= link_to("ViewMenu",{:controller=>'menus',:hotel_id=>h.id}, class:'btn-orange')%> 
<% end%> 

在控制器:

@hotels= Hotel.where('hotel_location LIKE ?',"%#{params[:search]}%") 

**@offers=Offer.all** 

我是新來的Rails。我有一個頁面,用戶可以看到某個城市可用的所有酒店。我在數據庫中有兩個表格。第一個表格名稱是hotels,其中酒店的所有信息都可用,另一個是offers,其中提供的所有優惠包括hotel_id。所以,如果idhotels表等於hotel_idoffers表我想要查看每個塊中的所有優惠。我怎麼做?

我還有一個問題。優惠表包含startDate和endDate字段。如果今天的日期在兩個日期之間或等於,我希望看到提供給用戶。

回答

0

更改查詢到這一點:

@hotels= Hotel.includes(:offers).where('hotel_location LIKE ?',"%#{params[:search]}%") 

這裏includes渴望負載相關報價爲一個酒店在一個單一的查詢。​​

確保你有這樣的在你的應用程序/模型/ hotel.rb:現在

has_many :offers 

,在視圖中。您可以簡單地致電優惠:

<% @hotels.each do |h| %> 
<%= h.hotel_Name%><% @hotelName=h.hotel_Name%> 
<%= image_tag h.hotelImage_url,:size=>'160x120'%> 
<%= image_tag('1407945135.png',:size=>'20x20',:alt=>'Logo')%> 
<%= h.hotel_location%> 
<% h.offers.each do |offer| %> 
    <%= offer.coupon_code %> 
<% end %> 
<%= link_to("ViewMenu",{:controller=>'menus',:hotel_id=>h.id}, class:'btn-orange')%> 
<% end%> 
+0

另一個問題是,如果我刷新頁面從用戶可以看到的數據庫的所有記錄,但我想看到某個地方的酒店。它刷新相同的頁面之前工作。 – John 2014-09-19 07:40:33

+0

你確定該查詢嗎? 'where('hotel_location LIKE?',「%#{params [:search]}%」)'我確信這是因爲where查詢。只要看看它一次。也許參數[:搜索]不可用? – Surya 2014-09-19 07:42:20

+0

是的,PARAMS [:搜索]頁面得到刷新後什麼也得不到...所以我如何解決它。 – John 2014-09-19 07:48:17

0

寫這個查詢在控制器

@hotels= Hotel.where('hotel_location LIKE ?',"%#{params[:search]}%").includes(:offers) 

,並考慮你能爲@hotels

@hotels.each do |hotel| 
    <%= hotel.hotel_Name%><% @hotelName=hotel.hotel_Name%> 
    <%= image_tag hotel.hotelImage_url,:size=>'160x120'%> 
    <%= image_tag('1407945135.png',:size=>'20x20',:alt=>'Logo')%> 
    <%= hotel.hotel_location%> 
    <% hotel.offers.each do |offer| %> 
    <%= offer.try(:name) %> 
    <%= offer.try(:coupon_code) %> 
    # any offer field you want to show, try is used to avoid errors if offer is nil 
    <% end %> 
<% end %> 
+0

好友,你忘了添加ERB標籤。 – Surya 2014-09-19 07:20:09

+0

是的,它已被修復 – RSB 2014-09-19 07:21:43

+0

我有另一個問題。'提供'表包含startDate和endDate字段。如果今天的日期在兩個日期之間,我想查看提供給用戶。 – John 2014-09-19 07:56:39