【问题标题】:What should be in the controller to update records from this params hash控制器中应该有什么来从这个参数哈希更新记录
【发布时间】:2012-11-08 03:36:34
【问题描述】:

这可能是一个简单的问题。我正在阅读 ruby​​onrails.org (http://guides.rubyonrails.org/form_helpers.html) 上的表单助手指南。在第 7.3 节中,它展示了如何制作一个返回参数哈希的表单,如下所示:

 {'person' => {'name' => 'Bob', 'address' => {'23' => {'city' => 'Paris'}, '45' => {'city' => 'London'}}}}

Bob 在哈希中有 2 个地址。那么为了同时更新 Bob 的两个地址,控制器中发生了什么?

谢谢。

更新:

这是我假设模型的样子,但我仍然不知道控制器应该是什么样子同时更新 Bob 的两个地址。

person.rb

attr_accessible :name, :addresses_attributes 

has_many :addresses
accepts_nested_attributes_for :addresses

地址.rb

attr_accessible :city

belongs_to :person

谢谢。

【问题讨论】:

  • 尝试阅读 rails 关联和accepts_nested_attributes_for。这两个会帮助你。
  • 我也读过这篇文章,但没有找到这个特定问题的答案。我知道如何一次更新 1 条记录,但是当有 2 条记录要更新时,我不知道该怎么做。
  • 我在上面更新了我认为模型应该看起来像嵌套属性。感谢您的帮助。

标签: ruby-on-rails


【解决方案1】:

按照惯例,我可以建议尝试以下方法:

def update
  @person = Person.find(params[:id])
  if @person.update_attributes(parmas[:person])
    #update successful, now do what you wanna do
  else 
    #update was unsuccessful 
  end
end

试试这个,如果遇到任何错误,请返回。但这可能不是学习事物的正确方法。您应该遵循Getting Started 和后续教程。

【讨论】:

  • 对。我混淆了一些我不清楚的不同问题,但我看到这应该使用来自 form_for fields_for 嵌套表单的输入正确更新。这是我真正想要解决的问题:stackoverflow.com/questions/13245182/…。你觉得你能帮上那个忙吗?我对如何解决这个问题的研究导致我在上面提出了这个新问题,但它最终并没有帮助我解决原来的问题。
  • 其实,我只是想通了,所以不要浪费你的时间去寻找。感谢您帮助我理解导致我得到答案的一些事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多