在没有JavaScript或AJAX的情况下在Rails 3.2中刷新视图

时间:2012-02-06 20:31:39

标签: ruby-on-rails ruby-on-rails-3 model controller refresh

如何在没有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函数?我不希望每次都刷新页面,只有当我点击刷新链接/按钮时才会刷新。

由于

3 个答案:

答案 0 :(得分: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>

如果这些都不合适,您可以在页面中嵌入<iframe>元素,然后根据需要刷新该文档。

答案 1 :(得分: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操作,该操作将更新您的数据库并重定向到您的索引操作,该操作将显示更新的推文。

答案 2 :(得分:1)

如果您不想使用Javascript加载数据,但您的用户已在其浏览器中启用了Javascript,只需创建一个链接或按钮,如下所示:

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