J'ai seulement utilisé une étendue statique par défaut pour mes projets et ma dernière version. Je voulais créer une fonctionnalité d'étendue dynamique, où l'utilisateur peut cliquer sur un bouton ou utiliser un menu déroulant pour changer l'ordre, ils voient une liste. Jusqu'à présent, j'ai rencontré quelques méthodes comme l'utilisation d'unscoping et la définition d'une nouvelle portée, et vu réorganiser. Je regarde les docs mais je ne sais pas trop comment rendre un utilisateur capable de choisir. Est-ce que j'utiliserais quelque chose comme Link_to, ou button_to dans le fichier HTML.erb correspondant?permettant aux utilisateurs de modifier l'ordre d'une portée
dans mon dossier post.rb
il avait l'air comme ça
default_scope { order(created_at: :desc) }
scope :ordered_by_title, -> { reorder(title: :asc) }
scope :ordered_by_reverse_created_at, -> { reorder(created_at: :ASC)}
j'ai ajouté les autres champs d'application sous la valeur par défaut parce que je suppose un fixerait les champs qu'ils voulaient et la vue appelleraient/les activer une fois qu'un utilisateur clique sur ou choisit à partir de la page rendue.
dans mon post_controller.rb
def index
@posts = Post.all
end
dans mon index.html.erb
la vue
J'ai la liste des postes rendus de cette façon, si elle ne fonctionne pas avec ce que je veux faire quelqu'un peut me montrer un meilleure façon de le faire?
# <some way for user to choose those defined scopes and render the new page would go here>
<% @posts.each do |post| %>
<div class="media">
<div class="media-body">
<h4 class="media-heading">
<%= link_to post.title, post %>
<small> <%= post.body %> </small>
</h4>
</div>
</div>
<% end %>