2 Stimmen

Verwendung von link_to mit einer Instanzvariablen und Argumenten

Ich versuche, einen Teil der Kommentare zu rendern, der sowohl mit dem Blog als auch mit dem Videomodell verwendet werden kann. Hier ist die Blog-Show-Seite, die nach dem Kommentarteil fragt und @blog als Modell übergibt (ich werde @video auf der Show-Seite des Videos übergeben):

<%= render :partial => 'comments/comments', :locals => {:model => @blog} %>

Der nächste Code ordnet die Kommentare in der Reihenfolge neuestes zuerst/ältestes zuerst:

<% if @comments.count > 1 %>
  <span class="list_order">
    <%= link_to('Newest First', model, :order => "DESC", :anchor => "comments") + " | " +
      link_to('Oldest First', model, :order => "ASC", :anchor => "comments") %>
  </span>
<% end -%>

Das funktioniert gut, wenn ich sage:

link_to('Newest First', blog_path(@blog, :order => "DESC".... etc.)

Aber ich weiß, dass man auch einfach vorbeigehen kann:

link_to('Newest First', @blog)

und es wird automatisch auf die Seite der Blog-Show weitergeleitet. In meinem Code übergebe ich also das "model" local, und die Seite wird aktualisiert, aber mein Argument für :order oder :anchor wird nicht übernommen. Wie übergeben Sie Argumente, wenn Sie nur die Instanzvariable und nicht den Pfad für die link_to-Methode verwenden?

1voto

Lee Punkte 521

Ok, ich hatte endlich die Gelegenheit, einen Freund zu fragen und habe die Lösung gefunden. Ich musste polymorphe Pfade verwenden. In meinem obigen Beispiel funktioniert also der folgende Code:

<%= link_to('Newest First', polymorphic_path(model, :order => "DESC", :anchor => "comments") + " | " + link_to('Oldest First', polymorphic_path(model, :order => "ASC", :anchor => "comments") %> 

Dann weiß es, dass es den richtigen Pfad für die verwendete Variable erzeugen muss. Hier sind einige Informationen dazu: http://apidock.com/rails/ActionDispatch/Routing/PolymorphicRoutes/polymorphic_path

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X