我有大约6-7个不同的动作,在相同的控制器,在每个视图加载被击中。我现在是这样做的:
person_id
被传递到URL中。
persons_controller
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操作中编写的,这相当于我需要在上面显示name
和age
的6-7视图。
我如何在第一个视图中通过ID查找这个人,然后通过每个操作跟踪特定的person
模型,而不必查找他并使用.map
方法?
发布于 2013-12-12 02:10:37
创建这样的函数
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
然后,在控制器的顶部添加以下内容,但是用要设置person的控制器操作替换:show和:编辑。
before_action :set_person, only: [:show, :edit]
这将在您指定的每个操作之前运行set_person函数,您可以在视图中访问@response_people
。
https://stackoverflow.com/questions/20533612
复制相似问题