我在数据库中有一个品牌表。我想要做的是按ID选择几行并在视图中显示它们。
这就是我所拥有的,但我无法让 Brand.find_by(id:[1,2,3])工作。
感谢任何帮助,谢谢!
在brand.rb模型中:
class Brand < ActiveRecord::Base
def selection
Brand.find_by(id: [1,2,3])
end
在brands / index.html.erb视图中
<% @brand.selection.each do |brand| %>
<%= link_to brand.name, brand %>
<% end %>
控制器中的
class BrandsController < ApplicationController
def index
@brands = Brand.all
end
def show
@brand = Brand.find(params[:id])
@review = Review.find(params[:id])
end
def new
@brand = Brand.new
end
def create
@brand = Brand.new(review_params)
end
end
答案 0 :(得分:0)
您可以尝试使用.find方法并将其传递给数组:
array_of_ids = [1,2,3]
Brand.find(array_of_ids)
然后你可以转储@ brand.selection的结果,这样我们就可以看到你要回来的了。
我也可以问一下,我不知道你为什么这样做的具体细节但是,让你的选择方法接受数组作为参数并将其传递给find方法而不是更有意义硬编码。
def selection(array_of_ids)
Brand.find(array_of_ids)
end
另外,在尝试从视图中保留尽可能多的逻辑方面,也许您应该在控制器中设置一个调用.selection
的变量,然后将其传递给您的视图。
def index
@brands = Brand.all
@selected_brands = Brand.selection
end
此外,除非Brand.selection是你要在其他地方重复使用的东西(如果你是,那很好),你可能只是在声明变量时直接将它贴在控制器中:
def index
@brands = Brand.all
array_of_ids = [1,2,3]
@selected_brands = Brand.find(array_of_ids)
end
在您的观看中,只需使用:
@selected_brands.each do |brand|
//something
end