Ruby on rails 如何在rails find方法中获取第一个类别id

Ruby on rails 如何在rails find方法中获取第一个类别id,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我的控制器中有以下内容 @posts = Post.where(category_id: params[:id]).paginate(page: params[:page], per_page: 20).to_a 我需要获取类别id,所以我尝试了 @category = @posts.category_id.first 我把它用在了视图隐藏区域 <input type="hidden" value="<%= @category %>" /> 如何在隐藏字段中获取

我的控制器中有以下内容

@posts = Post.where(category_id: params[:id]).paginate(page: params[:page], per_page: 20).to_a
我需要获取类别id,所以我尝试了

@category = @posts.category_id.first
我把它用在了视图隐藏区域

<input type="hidden" value="<%= @category %>" />

如何在隐藏字段中获取id并将错误作为

未定义的方法'category_id'


@posts
是一个数组。您不能对Post数组调用
Post
方法。您需要从要调用该方法的数组中选择一个post。要获得第一个,您可以使用
@posts[0]
@posts.first
。现在您有了一篇文章,您可以询问其类别id:

@category = @posts.first.category_id

也就是说,您在
params[:id]
上已经有了相同的值,那么为什么不使用它呢?

我只是想知道为什么不使用params[:id]也是一样的。