Ruby on Rails :在选择框中填充数据的最佳方法是什么
解释here
select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {include_blank: 'None'})
但最佳做法表示不查询来自视图的数据
此处Person.all
会发出查询以获取所有人
请从视图
证明此Person.all
来电
答案 0 :(得分:5)
为什么不在控制器中添加@people = Person.all
,然后在视图中添加@people.collect { ... }
?这样,您将在控制器中进行查询,而不是在您的视图中进行查询。
答案 1 :(得分:5)
你是对的,不要在视图中查询数据。更好的方法是在控制器中准备一个实例变量并将其传递给视图。但我认为这在这里真的值得商榷,因为这是一件小事。当你在这样的视图中使用它时,你不必回到控制器来找出实例变量的含义,但如果你想坚持惯例,那么你是正确的,你不应该这样做
答案 2 :(得分:2)
不要获取对象的所有属性,而是使用select子句,如
Person.select('id,name').map{|person| [person.id, person.name]}, and off-course interact
使用您的数据库(如控制器< => model< =>数据库),根据MVC架构。