在视图代码中:
<% @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
。因此,如果id
表中的hotels
等于hotel_id
表中的offers
,我希望看到每个块中的所有商品。我怎么做?
我有另一个问题。商品表包含startDate和endDate字段。如果今天的日期介于两个日期之间或等于,我希望看到用户的报价。
答案 0 :(得分:0)
在控制器中写下此查询
@hotels= Hotel.where('hotel_location LIKE ?',"%#{params[:search]}%").includes(:offers)
在视野中你可以做到
@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 %>
答案 1 :(得分:0)
将@hotels
的查询更改为:
@hotels= Hotel.includes(:offers).where('hotel_location LIKE ?',"%#{params[:search]}%")
此处includes
急切地在一个查询中加载酒店的相关优惠。 More on includes here.
请确保您的 app / models / 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%>