Mam 4 linki na stronie (sukienki, spódnice, koszule, kapelusze) i chcę, aby zawsze różni się w zależności od strony. Powiedzmy, że klikamy kapelusze, a linki byłyby koszule, sukienki, spódnice, więc obecna kategoria, na której jesteśmy, nie będzie wyświetlana.

Znalazłem coś podobnego tutaj [1]: Renderowanie innym pokaz Strony z kategorią w Ruby na Rails

Ale to nie jest naprawdę to, czego chcę, ponieważ muszę renderować kilka linków (nie jeden). Moim myśleniem jest utworzenie 4 różnych częściowych części i renderowania 3 linków, jeśli params = do tego, którego nie chcemy wyświetlać. Czy to jest dobre myślenie, czy jest jakiś lepszy sposób na to?

1
paula 3 sierpień 2020, 11:36

1 odpowiedź

Najlepsza odpowiedź

Nie podajesz dokładnego kodu, więc na podstawie tego, co zakładam, że masz w przybliżeniu, możesz zrobić coś takiego:

# Somewhere in your controller
def index # or any action really
  ...
  @current_category = Category.find(params[:category_name]) " # (Or however you want to refer to your category object.
  @all_categories = Category.all # (Or an array of plain strings, which would then better be set in some before_action hook so it is present in each of your different pages.)
  ...
end

# In your view

(@all_categories - @current_category).each do |category|
  <%= render "categories/link_card", category: category %>
end

A następnie w twoich częściach categories/_link_card.html.erb Możesz mieć kod wyświetlania linku do dowolnej kategorii, przy użyciu kategorii zmiennej wejściowej, aby uzyskać dokładne szczegóły swojej kategorii. (Np. Nazwisko, adres URL).

1
Dave 3 sierpień 2020, 09:11