ich eine Blogging-Anwendung, die Beiträge hat, die Stimmen durch eine vote
Aktion im Pfosten-Controller empfangen kann. Weil ich stimme sowohl in der Index-und Show-Ansichten, ich redirect_to :back
nach einer Abstimmung ist, wie folgt.Wie ein Anker zu redirect_to hinzuzufügen: zurück
def vote
# voting logic goes here
redirect_to :back
end
Dies leitet mich auf die richtige Seite um, aber ich möchte auf den spezifischen Beitrag innerhalb der Seite umleiten. Um dies zu tun, fügte ich meinem Post-Teil-Div einen identifizierenden Anker hinzu.
<div id="post_<%= post.id %>">
<%= post.content %>
</div>
Wie kann ich dies in meinem redirect_to :back
beziehen? Ich habe das unten versucht, was nicht funktioniert.
Alternativ, wenn ich eine If-Klausel für die Show-und Index-Ansichten verwenden würde, wie mache ich das? Ich habe das folgende versucht, das undefined method 'current_page' for VocabsController
zurückgibt.
#this doesn't work!
if current_page?(posts_path)
redirect_to posts_path(anchor: "post_#{@post.id}"
else
redirect_to @post
end
Hallo @ Kevin. Danke für die Eingabe. Es scheint, dass meine erste Option (mit ': back') nicht funktioniert, da sie den Anker nicht akzeptiert. Die zweite Option (mit if-Klausel) scheint in Ordnung zu sein, und die Methode view_context funktioniert. Wie würde ich sagen, "wenn Sie für einen Beitrag auf der Indexseite gewählt haben"? Die Verwendung von 'current_Page? (Posts_path)' funktioniert nicht, wahrscheinlich weil sie innerhalb einer anderen Aktion aufgerufen wird (dh nicht die Index-Aktion). Wie kann ich sagen: „Wenn ich für einen Beitrag auf der Indexseite stimmen, auf der Indexseite zu diesem Post umleiten, sonst auf diese Stelle des Erscheinen Seite umleiten“ – umezo
Ich denke, was Sie tun möchten, ist keine Aktion verwenden Umleitung der Benutzer, aber tatsächlich haben die Benutzer für den Beitrag abstimmen, ohne irgendwo umgeleitet zu werden (bleiben auf der gleichen Seite, wo er gewählt hat). So ist mein Rat einen einfachen Ajax-Link zu verwenden: es führt die angegebene Methode ohne die aktuelle Ansicht des Benutzers zu ändern. BEARBEITEN: Hier ist der Code, den Sie benötigen würden '<% = link_to_function" Vote up "," $ .ajax ({Typ: 'GET', URL: '/ your_controller/voteup /'}) "%>' –
Guter Punkt. das ist mehr oder weniger was ich getan habe. Danke für die Eingabe. – umezo