Ansicht in Rails 3.2 ohne JavaScript oder AJAX aktualisieren - Ruby-On-Rails, Ruby-On-Rails-3, Modell, Controller, Refresh

Wie aktualisiere ich eine Ansicht ohne Javascript / AJAX, so dass sie eine Methode in meinem Modell in Rails 3.2 aufruft?

Tweets-Modell:

class Tweet < ActiveRecord::Base
def self.get_tweets
#get more tweets code and store in DB
end
end

Tweets-Controller:

class TweetsController < ApplicationController
def index
@all_tweets = Tweet.all
end
end

Wie rufe ich die Funktion get_tweets über eine Schaltfläche oder einen Link in der Indexansicht auf? Ich möchte nicht, dass die Seite jedes Mal aktualisiert wird, nur wenn ich auf den Refresh Link / Button klicke.

Vielen Dank

Antworten:

2 für die Antwort № 1

Fügen Sie eine Route zu Ihren Routen hinzu.rb

get "Tweets/update_tweet"

Fügen Sie dann eine Aktion hinzu TweetsController

def update_tweet
Tweet.get_tweets
redirect_to :action => "index"
end

und fügen Sie Ihrer Ansicht nach einen Link zu der neuen Route hinzu

<%= link_to "Update Tweets", "/Tweets/update_tweet"%>

Wenn Sie auf den Link klicken, wird die update_tweet-Aktion ausgelöst, die Ihre Datenbank aktualisiert und auf Ihre Indexaktion umleitet, die die aktualisierten Tweets anzeigt.


2 für die Antwort № 2

Wenn Sie JavaScript nicht zum Aktualisieren eines Teils der Seite verwenden möchten, müssen Sie die gesamte Seite neu laden. Sie können dies alle paar Sekunden über ein Meta-Tag tun:

<!-- refresh every 30 seconds -->
<meta http-equiv="refresh" content="30">

oder erstellen Sie einen Link zu der Seite:

<a href="...">Refresh Tweets</a>

oder erstelle ein Formular:

<form action="..." method="post">
<input type="submit" value="Refresh Tweets">
</form>

Wenn keine davon geeignet sind, können Sie ein <iframe> Element in Ihrer Seite und aktualisieren Sie das Dokument bei Bedarf.


1 für die Antwort № 3

Wenn Sie Javascript nicht zum Laden von Daten verwenden möchten, aber Ihre Benutzer Javascript in ihren Browsern aktiviert haben, erstellen Sie einfach einen Link oder eine Schaltfläche wie folgt:

<a href="javascript:window.location.reload()">Reload Page</a>
<input type="button" value="Reload Page" onClick="window.location.reload()">

Verwandte Fragen
Speisekarte