我已经构建了一个“NewsItem”控制器,其中包含一个名为“top”的方法。这由 javascript 请求调用,以每 10 秒更新一次页面上的 DIV。这一切都运作良好。
def top(number = false)
# set the default value to use for the number
default_number = 10;
# perform checks on the variable
if number == false
if params.include?(:number)
number = params[:number]
else
number = default_number
end
end
# Run query to get the required news items
items = NewsItem.all( :order => ("created_at DESC"),
:include => [:profile],
:limit => number)
# iterate around the items that have been returned
@top_news = ""
items.each do |item|
@top_news += render_to_string :partial => "partials/news_item", :locals => {:item => item}
end
respond_to do |format|
format.html { render :partial => "partials/news_top"}
end
end
这通过 '/news/top' 或 '/news/top/20' 调用以更改返回的项目数。
问题是当页面首次加载时,“新闻”DIV 为空 10 秒,直到 JavaScript 运行以更新 DIV。所以我想通过调用这个函数来确保 DIV 已经被填充。
现在,我希望“新闻”DIV 在所有页面中都可用,它在“layouts/application.html.erb”模板中定义。所以我需要调用“NewsItem”控制器中的“top”方法,以便将其呈现为初始 HTML。这是我苦苦挣扎的地方,因为在这个阶段我无法弄清楚如何使用“helper_method”来使其可用。
我有一种感觉,我在这里遗漏了一些东西,并且不了解整个过程。
非常感谢您的帮助。
问候, 拉塞尔