जावास्क्रिप्ट या AJAX के बिना रेल 3.2 में रीफ्रेश दृश्य - रूबी-ऑन-रेल, रूबी-ऑन-रेल -3, मॉडल, नियंत्रक, ताज़ा करें

मैं जावास्क्रिप्ट / AJAX के बिना दृश्य कैसे अपडेट करूं ताकि यह मेरे मॉडल में रेल 3.2 में एक विधि को कॉल करे?

ट्वीट्स मॉडल:

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

ट्वीट्स नियंत्रक:

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

इंडेक्स व्यू में बटन या लिंक के माध्यम से get_tweets फ़ंक्शन को मैं कैसे कॉल करूं? मैं नहीं चाहता कि पेज हर बार ताज़ा करे, केवल तभी जब मैं ताज़ा लिंक / बटन पर क्लिक करता हूं।

धन्यवाद

उत्तर:

जवाब के लिए 2 № 1

अपने मार्गों के लिए एक मार्ग जोड़ें। आरबी

get "Tweets/update_tweet"

फिर अपने लिए एक क्रिया जोड़ें TweetsController

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

और अपने विचार में नए मार्ग के लिए एक लिंक जोड़ें

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

जब आप लिंक पर क्लिक करेंगे तो यह update_tweet कार्रवाई को ट्रिगर करेगा, जो आपके डेटाबेस को अपडेट करेगा और आपके इंडेक्स एक्शन पर रीडायरेक्ट करेगा जो अद्यतन ट्वीट्स प्रदर्शित करेगा।


जवाब के लिए 2 № 2

यदि आप पेज के किसी हिस्से को रीफ्रेश करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना चाहते हैं, तो आपको पूरे पृष्ठ को फिर से लोड करना होगा। आप मेटा टैग के माध्यम से हर कुछ सेकंड ऐसा कर सकते हैं:

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

या पृष्ठ के लिए एक लिंक बनाएँ:

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

या एक फॉर्म बनाएं:

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

यदि इनमें से कोई भी उपयुक्त नहीं है, तो आप एक एम्बेड कर सकते हैं <iframe> अपने पृष्ठ में तत्व और मांग पर उस दस्तावेज़ को रीफ्रेश करें।


उत्तर № 3 के लिए 1

यदि आप डेटा लोड करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना चाहते हैं, लेकिन आपके उपयोगकर्ताओं ने अपने ब्राउज़र में जावास्क्रिप्ट को सक्षम किया है, तो बस इस तरह एक लिंक या बटन बनाएं:

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

संबंधित सवाल
सबसे लोकप्रिय