2012-02-06 50 views
0

如何在沒有Javascript/AJAX的情況下更新視圖,以便在Rails 3.2中調用我的模型中的方法?在沒有JavaScript或AJAX的情況下在Rails 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

沒有使用JavaScript,你唯一的選擇是重新加載整個頁面。 – choise 2012-02-06 21:03:41

+0

@choise,我該如何調用get_tweets函數?沒有一個答案顯示如何在Rails中實際做到這一點,這是我的問題。視圖是什麼樣的?控制器是什麼樣的? – AdamT 2012-02-06 21:47:35

+0

只需在控制器中執行'Tweet.get_tweets' – choise 2012-02-06 22:08:54

回答

2

路由添加到您的routes.rb

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動作,它會更新你的數據庫,並重定向到你的索引動作,它將顯示更新的鳴叫。

1

如果你不想使用JavaScript加載數據,但你的用戶在他們的瀏覽器中啓用JavaScript,則只需創建這樣一個鏈接或按鈕:

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

這將如何觸發get_tweets方法? – AdamT 2012-02-06 21:00:42

+0

通過在您的視圖中調用此方法。 – iblue 2012-02-06 21:29:08

2

如果您不能/不想用JavaScript來刷新頁面的一部分,你必須重新加載整個頁面。您可以通過元標記爲此每隔幾秒鐘:

<!-- 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> 

如果沒有這些是合適的,你可以在你的頁面中嵌入一個元素,並按需刷新該文檔。

相關問題