我有一个应用程序,有几个部分,如新闻,帖子,工作,事件等。所有这些都与工作注册/登录系统。
“新闻”部分显示所有可供查看的新闻,并有一个显示最近活动的小div
最近的ACTIVITY应该只显示当前用户在该会话中看到的最后5个新闻。
我设法显示了当前用户所见的最后5个url,但我希望仅限于新闻控制器。
class ApplicationController < ActionController::Base
before_filter :store_recent_news
private
def store_recent_news
session[:recents] ||= []
session[:recents].delete_at(0) if session[:recents].size >= 5
session[:recents] << request.url
end在最近的div活动中,我将只显示最后5个新闻,我现在显示的列表如下:
-本地主机:3000/news/17
-本地主机:3000/新闻
-当地主机:3 000/就业/29
-当地主机:3 000个/职位
-localhost:3000/目录
我只想显示到当前用户看到的最后一个新闻的链接,如下所示
链接到news2
链接到news5
链接到news3
我希望我能清楚地知道问题出在哪里,我想做什么。
好的,我设法获得了当前用户访问的最后5条新闻的ID。
before_filter :recently_viewed, only: [:show, :index]
def recently_viewed
(session[:Directory_id] ||= []) << params[:id]
session[:Directory_id].delete_at(0) if session[:Directory_id].size >= 10
end现在,我成功地显示了当前用户在会话中访问的新闻的最后5个ID,但我需要将新闻的名称显示为链接。有什么想法吗?
发布于 2014-04-09 14:28:16
before_filter :recently_viewed_contacts
def recently_viewed_contacts
session[:New_id] ||= []
session[:New_id] << params[:id] unless params[:id].nil?
session[:New_id].delete_at(0) if session[:News_id].size >= 4
end因此,我想出了如何用相同的数组方法来实现,只需将参数更改为只检查新闻匹配id,并通过刷新或检查与新闻不同的其他视图来对零进行稍微的修正。
def index
@recent_news = session[:News_id]
@news = User.approved.order(:name).page(params[:page]).per(8)
end并使用新的数组显示用户访问的最后5个新闻的标题。
<% @recent_news.each do |recent| %>
<p><%= New.find(recent).title %></p>
<% end %>发布于 2014-04-08 18:11:55
您应该在新闻模型中创建一个范围:
scope :recent_news, order("created_at desc").limit(5)然后,在您的news_controller中,无论您需要什么操作,您都可以访问这个自定义查询:
def index
# whatever
@recent_news = News.recent_news
end然后,您可以在对应视图中使用实例变量。
https://stackoverflow.com/questions/22944637
复制相似问题