首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何只存储和显示当前用户看到的最后5条新闻?

如何只存储和显示当前用户看到的最后5条新闻?
EN

Stack Overflow用户
提问于 2014-04-08 17:53:47
回答 2查看 346关注 0票数 0

我有一个应用程序,有几个部分,如新闻,帖子,工作,事件等。所有这些都与工作注册/登录系统。

“新闻”部分显示所有可供查看的新闻,并有一个显示最近活动的小div

最近的ACTIVITY应该只显示当前用户在该会话中看到的最后5个新闻。

我设法显示了当前用户所见的最后5个url,但我希望仅限于新闻控制器。

代码语言:javascript
复制
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。

代码语言:javascript
复制
 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,但我需要将新闻的名称显示为链接。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-09 14:28:16

代码语言:javascript
复制
  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,并通过刷新或检查与新闻不同的其他视图来对零进行稍微的修正。

代码语言:javascript
复制
  def index
    @recent_news = session[:News_id]
    @news = User.approved.order(:name).page(params[:page]).per(8)
  end

并使用新的数组显示用户访问的最后5个新闻的标题。

代码语言:javascript
复制
        <% @recent_news.each do |recent| %>
          <p><%= New.find(recent).title %></p>
        <% end %>
票数 0
EN

Stack Overflow用户

发布于 2014-04-08 18:11:55

您应该在新闻模型中创建一个范围:

querying.html#scopes

代码语言:javascript
复制
scope :recent_news, order("created_at desc").limit(5)

然后,在您的news_controller中,无论您需要什么操作,您都可以访问这个自定义查询:

代码语言:javascript
复制
def index
  # whatever
  @recent_news = News.recent_news
end

然后,您可以在对应视图中使用实例变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22944637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档