【问题标题】:Access form_for object in corresponding controller method在相应的控制器方法中访问 form_for 对象
【发布时间】:2016-03-31 10:56:58
【问题描述】:

我有一个form_for,我想在相应的提交控制器方法中访问它的变量。我将解释我的意思: 我有如下呈现的对象列表:

<%= render medical_situations %>

我对应的medical_situation.html.erb文件我指定了每个对象的样子,每个对象里面的form_for如下:

<%= form_for medical_situation, {url: :send_to_pool_medical_situations, method: :post, remote:true} do |f| %>

在相应的控制器方法中,我想访问那个特定的 medical_situation 对象。是否可以。我知道我可以通过 medical_situation_id 来找到合适的对象,但我很感兴趣我可以在没有额外请求和代码的情况下做到这一点。在我的 send_to_poo 方法中,我想更新该对象。

【问题讨论】:

  • 你的意思是你想用参数发送对象?,最好的方法是将对象的 id 发送到控制器并在那里创建对象
  • 也许你可以通过在控制器中声明一个带有@@符号的静态变量并尝试在视图页面中更新它来实现这一点。

标签: ruby-on-rails ruby-on-rails-4 form-for


【解决方案1】:

在相应的控制器方法中,我想访问那个特定的 医疗状况对象。

这是不可能的,因为 http 是无状态的。每个新请求都独立于之前的请求进行处理。应用程序将在响应呈现后删除所有内存中的变量,并使用新的控制器实例从头开始处理新的传入请求,因此 medical_situations 变量将不再存在。如何告诉应用程序您要显示哪个对象的唯一方法是在请求参数中传递对象 ID。它将允许您从数据库中获取此对象并从您的控制器中显示它。

what does it mean when they say http is stateless

https://stackoverflow.com/questions/13200152/why-say-that-http-is-a-stateless-protocol

【讨论】:

    【解决方案2】:

    不,我认为您不能将视图页面中的对象发送到您的控制器。 您必须传递一个对象的 id,然后您必须再次使用控制器中 params 的 id 找到该对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      相关资源
      最近更新 更多