【问题标题】:In Rails how do I update form fields in the model?在 Rails 中,如何更新模型中的表单字段?
【发布时间】:2009-06-16 09:40:02
【问题描述】:

假设我想将我指定的所有字段设置为 = "frog"

在模型中,我可以使用以下方法手动设置每个:

self.field1 = 'frog'
self.desc_field = 'frog'
self.fieldx = 'frog'
etc....

但是如何通过将字段名称放入数组中来做到这一点?

当我尝试时

fields_array=['field1','desc_field','fieldx']    
fields_array.each { |field|    
  self.field = 'frog'
}        

它不起作用。有什么建议吗?

【问题讨论】:

  • 您想要达到的最终结果是什么?您可能不希望在控制器中使用此类代码。
  • 是的,实际上代码在模型中,谢谢我更新了问题。实际上想从表单中清除 ms word unicode。在 stackoverflow.com/questions/998555/ 上提出了这个问题,但似乎人们对完整的问题感到不知所措,因为没有人回答。所以想如果它是一个更简单的形式有人可能会回答。

标签: ruby-on-rails forms model


【解决方案1】:

上面 John Topley 的回答基本上是正确的,但是由于您要分配值,因此您想做以下事情:

fields_array=['field1','desc_field','fieldx']    
fields_array.each { |field|    
  self.send("#{field}=", 'frog')
}

注意添加的等号。这样你就可以使用self.field1='frog' 而不是self.field1('frog')

【讨论】:

  • 好收获。我不确定赋值的确切语法,也没有 Ruby 解释器。
【解决方案2】:

尝试使用send 方法:

fields_array=['field1','desc_field','fieldx']    
fields_array.each { |field|    
  self.send("#{field}", 'frog')
}

【讨论】:

  • 动作控制器返回此错误“参数数量错误(1 代表 0)”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
相关资源
最近更新 更多