我在同一个控制器中有大约6-7个不同的动作,每个视图加载都会受到影响。我现在如何做到这一点就是这样:
person_id
会传入网址。
person_id = params[:person_id]
people = PersonSearch.where(:person_id => person_id)
@response_people = people.map do |p|
{
:name => p.name,
:age => p.age
}
上面的代码片段是在我的控制器中用6-7个动作编写的,这相当于我需要显示{7}个name
和age
的6-7个视图。
我如何在第一个视图中通过ID查看此人,然后通过每个操作跟踪特定的person
模型,而无需查看他并使用.map
方法?
答案 0 :(得分:0)
创建一个像这样的函数
def set_person
person_id = params[:person_id]
people = PersonSearch.where(:person_id => person_id)
@response_people = people.map do |p|
{
:name => p.name,
:age => p.age
}
end
然后在控制器的顶部添加此项,但替换:show和:使用您想要设置人员的控制器操作进行编辑。
before_action :set_person, only: [:show, :edit]
这将在您指定的每个操作之前运行set_person函数,因为您可以在视图中访问@response_people
。