Ich habe eine Website mit Rails und MongoDB zum Senden, Lesen und Aktualisieren von Elementen implementiert.
Es gibt einige verschiedene Bereiche auf der Website, in denen Sie Elemente anzeigen und basierend auf Suchbegriffen oder anderen Abfragemethoden filtern können.
Zum Beispiel: Auf der Homepage gibt es eine Liste von Kategorien nach denen sortiert werden kann. 'Anwendungsfall', 'Status', 'Level'. Wenn ein Benutzer auf die Schaltfläche "Use Case" klickt, wird eine Liste mit spezifischeren Kategorien für Anwendungsfälle wie "E-Commerce" angezeigt, wenn sie darauf klicken, dass ein div mit den Elementen gefüllt wird, deren Use Case gleich E ist. Handel. Von diesem Punkt an können sie auf einen "Details" -Knopf klicken, der ihnen alle Eigenschaften für den Gegenstand zeigt.
In dieser "detaillierten" Ansicht habe ich eine nächste und zurück Schaltfläche. Im Moment scrollt es durch die Datenbank von Gegenständen, indem es die Gegenstands-ID-Nummer inkrementiert und dekrementiert.
Ich möchte die nächste und zurück-Taste in der Lage sein, durch die Liste scrollen, die sie in der bevölkerten div präsentiert wurden. Es ist zugänglich durch eine Instanzvariable mit der Bezeichnung @items
, die im Element-Controller initialisiert wird, aber nicht in der Detailansicht angezeigt wird, selbst wenn sie als globale Variable gespeichert wird.
Die einzige Option, an die ich gedacht habe, besteht darin, die Liste zu übergeben von Elementen durch als URL-Parameter - aber das scheint eine chaotische Art, es zu tun.
Gibt es eine andere Möglichkeit, eine Instanzvariable zwischen verschiedenen Ansichten zu übergeben?
Beispielcode:
item_controller.rb:
Rails & Mongoid - Scrollen durch bestimmte Gruppe von Datensätzen
def list
@items = Item.asc(:id)
end
list.html.erb:
<tbody>
<% @items.each do |item| %>
<% $list = @items%>
<tr>
<td><%= item.name %></td>
<td><% item.Use_Cases.each do |u| %>
<ul>
<li><%= u %></li>
</ul>
<% end %>
</td>
<td><%= item.Level %></td>
<td><%= item.Status %></td>
<td><%= link_to item, class: 'btn btn-default' do %>
<span class="glyphicon glyphicon-eye-open"></span> Details
<% end %>
</td>
</tr>
<% end %>
</tbody>
show.html.erb - Scroll-Tasten:
<div class="panel-footer">
<%if @item.id != @first_id %>
<% #need to change to scroll to previous in $list %>
<%= link_to item_path(:id => (@item.id-1)), class: 'btn btn-default' do %>
<span class="glyphicon glyphicon-menu-left"></span> Back
<% end %>
<% end %>
<%if @item.id != @last_id %>
<% #need to change to scroll to next in $list %>
<%= link_to item_path(:id => (@item.id+1)), class: 'btn btn-default' do %>
Next <span class="glyphicon glyphicon-menu-right"></span>
<% end %>
<% end %>
</div>
Für diese Situtation wird diese Lösung nicht funktionieren - ich brauche die '@ Elemente' Liste von 'list.html.erb' Ansicht passieren zu können, die Ansicht "show.html.erb" – Gcap