2012-02-06 49 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> 

如果没有这些是合适的,你可以在你的页面中嵌入一个元素,并按需刷新该文档。

相关问题