将变量传递到模型 after_initialize 方法

发布于 2024-09-10 04:49:00 字数 413 浏览 3 评论 0原文

我有以下(高度简化的)模型,它使用 will_paginate

class Search < ActiveRecord::Base

  attr_reader :articles

  def after_initialize
    @articles = Article.paginate_by_name name, :page => 1
  end

end

并且我的显示操作中的控制器代码是

@search = Search.new(params[:search])

这一切都工作正常,但请注意我将页码硬编码为 1,问题是将 params[:page] 值传递到 after_initialize方法,有人可以建议一种优雅的方法吗?

谢谢

I have the following (heavily simplified) model, that uses will_paginate

class Search < ActiveRecord::Base

  attr_reader :articles

  def after_initialize
    @articles = Article.paginate_by_name name, :page => 1
  end

end

and the controller code in my show action is

@search = Search.new(params[:search])

This all works fine, but notice i hard coded the page number to 1, problem is passing params[:page] value into the after_initialize method, can anyone suggest an elegant way to do this please?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后eg是否自 2024-09-17 04:49:00

将页面参数(或者更好的是选项哈希参数)添加到初始化方法:

class Search
  def initialize(search, options = {})
    @options = options
  end

  def after_initialize
    @articles = Article.paginate_by_name name, :page => @options[:page]
  end
end

然后在控制器中:

@search = Search.new(params[:search], :page => params[:page])

如果您愿意,您甚至可以为选项哈希提供默认值。

Add a page parameter (or even better an options hash parameter) to the initialize method:

class Search
  def initialize(search, options = {})
    @options = options
  end

  def after_initialize
    @articles = Article.paginate_by_name name, :page => @options[:page]
  end
end

and then in your controller:

@search = Search.new(params[:search], :page => params[:page])

You can even supply default values to the option hash, if you like.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文