在 RAILS 中将模型从一个控制器动作传递到另一个控制器动作的替代方法

Posted

技术标签:

【中文标题】在 RAILS 中将模型从一个控制器动作传递到另一个控制器动作的替代方法【英文标题】:Alternative ways to pass model from one controller action to another in RAILS 【发布时间】:2013-12-12 01:55:00 【问题描述】:

我在同一个控制器中有大约 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
  

上面的代码 sn-p 在我的控制器中以 6-7 个动作编写,这相当于我需要在 6-7 个视图上显示 nameage

如何在我的第一个视图中通过 ID 查找此人,然后通过每个操作跟踪特定的 person 模型,而无需查找他并使用 .map 方法?

【问题讨论】:

【参考方案1】:

创建一个这样的函数

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 和 :edit 替换为您要设置人员的控制器操作。

before_action :set_person, only: [:show, :edit]

这将在您指定的每个操作之前运行 set_person 函数,因为您可以访问视图中的@response_people

【讨论】:

以上是关于在 RAILS 中将模型从一个控制器动作传递到另一个控制器动作的替代方法的主要内容,如果未能解决你的问题,请参考以下文章

在IOS中将动作传递给一个uiview到另一个

Rails 将@variable 从一个显示页面传递到另一个显示页面

如何在 Qt 中将数据从一种形式传递到另一种形式?

在 knockout.js 中将 observable 从一个视图模型传递到另一个视图模型

在 ASP.net MVC 4 中将类对象从一个控制器动作传递到不同的控制器动作

如何在 Codeigniter 中将变量从一个控制器传递到另一个控制器