控制器中has_many的问题

时间:2015-07-17 16:57:17

标签: ruby-on-rails

我试图在同一视图中显示所有工作人员和属于他们的所有帖子。

我正在用

取出所有工人
<%= @workers.each do |worker| %>

然后发布。

<%= worker.posts.each |post| %>

这很好用,但我想在帖子中添加一个简单的搜索功能

    <%= worker.posts.search(params[:search]).each |post| %>

但是这给了我一个未定义的搜索方法错误。

我的理解是我不能添加.search,除非它在控制器内,但我无法弄清楚如何在控制器中定义帖子。

我在控制器中尝试过的事情:

@posts = worker.posts
@posts = @workers.posts

我也尝试添加:

@worker = Worker.find(params[:id])

试着躲开,但在我尝试之前会出错。

非常感谢一些帮助

解决方案:

绕道而行。

<% Post.search_post(params[:search_post]).where(worker_id: worker.id).each do |month, posts| %>

我确信有一个更好,更清洁的解决方案,但无论如何这都适用于我想要的。

1 个答案:

答案 0 :(得分:0)

worker.posts应返回一个ActiveRecord :: Relation,它没有名为search的方法。

如果要添加一个,则必须在模型中执行此操作。

class Post < ActiveRecord::Base
  scope :search, ->(options) {
    # logic goes here
  }
end