Rails 2.3.8如何在分页示例中将'id'传递给方法?

时间:2010-08-26 05:16:19

标签: ruby-on-rails controller pagination

我正在通过Michael Hartl的“学习Rails示例”教程(11.33)。相关代码是:


class PagesController < ApplicationController

  def home

    @title = "Home"
    if signed_in?
      @micropost = Micropost.new
       @feed_items = current_user.feed.paginate(:page => params[:page])
    end
  end

class User < ActiveRecord::Base

  def feed

    Micropost.all(:conditions => ["user_id = ?", id])

  end

module SessionsHelper

  def sign_in(user)

    user.remember_me!
    cookies[:remember_token] = { :value   => user.remember_token,
                                 :expires => 20.years.from_now.utc }
    self.current_user= user
  end

  def current_user=(user)

    @current_user = user
  end


  def current_user

    @current_user ||= user_from_remember_token
  end

@feed_items然后呈现为“will_paginate”的集合,一切正常。

我的问题是我无法理解current_user如何传递给PagesController行中的“feed”方法,即

“@ feed_items = current_user.feed.paginate(:page =&gt; params [:page])”

非常感谢任何帮助

艾伦

2 个答案:

答案 0 :(得分:0)

很可能“current_user”是在控制器的paret类中定义的:ApplicationController。在控制器目录中搜索“application_controller.rb”。

答案 1 :(得分:0)

current_user永远不会“传递”到feed方法 - feed方法在current_user对象上称为。看一下用户模型:

def feed
  Micropost.all(:conditions => ["user_id = ?", id])
end

这是一个在调用current_user.feed时执行的实例方法。 id哈希中的:conditions引用用户对象实例的id,在本例中为current_user