[英]Making routes with 2 params at the same time in Rails
我真的很堅持。 我是新手。
我想做一個雙參數路由來按2個屬性過濾照片。 如果我按類別1可視化照片並單擊區域1,則它應同時顯示類別1和區域1的照片。
示例:我想同時查看具有類別屬性:1和區域屬性:1的照片。 我弄完了:
`def type
@photos = Photo.by_category(params[:category_id]).paginate(:page => params[:page])
render :index
end
def zone
@photos = Photo.by_zone(params[:zone_id]).paginate(:page => params[:page])
render :index
end
def search
@photos = Photo.with_user_avatar.all
@photos = @photos.where('category = ?', params[:category_id]) if params[:category_id]
@photos = @photos.where('zone = ?', params[:zone_id]) if params[:zone_id]
@photos = @photos.paginate(:page => params[:page])
end`
get 'spots/:category_id', to: "photos#type", as: :spots_category get 'spots/zonas/:zone_id', to: "photos#zone", as: :spots_zone get 'spots/:category_id/:zone_id', to: "photos#search", as: :spots_category_zone get 'spots/zonas/:zone_id/:category_id', to: "photos#search", as: :spots_zone_category
`<section class="row semi_padding_top">
<aside id="sidemenu" class="large-3 columns">
<a href="#" data-dropdown="drop1" data-options="align:right" class="button dropdown"></i> Quiero ver spots de...</a><br>
<ul id="drop1" data-dropdown-content class="f-dropdown" data-options="align:right">
<li><%= link_to "Baños", spots_zone_path(1) %></li>
<li><%= link_to "Cocinas", spots_zone_path(2) %></li>
<li><%= link_to "Cuartos de estar", spots_zone_path(3) %></li>
<li><%= link_to "Dormitorios", spots_zone_path(4) %></li>
<li><%= link_to "Exteriores", spots_zone_path(5) %></li>
<li><%= link_to "Hostelería", spots_zone_path(6) %></li>
<li><%= link_to "Infantil", spots_zone_path(7) %></li>
<li><%= link_to "Oficinas", spots_zone_path(8) %></li>
<li><%= link_to "Salones", spots_zone_path(9) %></li>
</ul>
<h5 class="bold uppercase lightgrey">Estilos
<span class="green"><%= (@zone ? "para #{@zone}": "") %></h5></span>
<ul class="listnone bold lightgrey">
<li><%= link_to "Moderno", spots_category_path(1, zone: @zone) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Clásico", spots_category_path(2) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Industrial & Loft", spots_category_path(3), zone: @zone %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Minimalista", spots_category_path(4), zone: @zone %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Rústico", spots_category_path(5) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Contemporáneo", spots_category_path(6) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Étnico", spots_category_path(7) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Art Deco", spots_category_path(8) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
<li><%= link_to "Ecléctico", spots_category_path(9) %>
<span class="spot_count small right"><%= @photos.count %></span></li>
</ul>
</aside>
<%= render 'spotlist' %>
`
我不知道如何配置視圖以顯示雙精度參數。
我試過<%= link_to“ Moderno”,spot_category_path(1,zone:@zone)%> ,但沒有用。
謝謝!!!
Rails將按照在路線中指定的順序匹配參數。 例如:
get 'spots/:category_id/:zone_id', to: "photos#search", as: :spots_category_zone
<%= link_to "Moderno", spots_category_zone_path(1, 'Moderno') %>
...將輸出到http://localhost:3000/spots/1/Moderno
。 您還可以明確指定它們:
<%= link_to "Moderno", spots_category_zone_path(category_id: 1, zone_id: 'Moderno') %>
或者,您可以給它提供路由中未指定的參數,在這種情況下,它將把它們附加為普通的?get=
值。
get 'spots/:category_id/:zone_id', to: "photos#search", as: :spots_category_zone
<%= link_to "Moderno", spots_category_zone_path(1, 'Moderno', foo: 'bar') %>
...將為您提供http://localhost:3000/spots/1/Moderno?foo=bar
。
如果您出於某些原因要不按順序列出它們,則明確指定它們將很有幫助。
<%= link_to "Moderno", spots_category_zone_path(zone_id: 'Moderno', foo: 'bar', category_id: 1) %>
...仍然為您提供http://localhost:3000/spots/1/Moderno?foo=bar
。
在您的情況下,如果@zone == 'foo'
,則<%= link_to "Moderno", spots_category_path(1, zone: @zone) %>
返回http://localhost:3000/spots/1?zone=foo
。 如我的第一個示例所示,您想使用spots_category_zone_path
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.