Rails:从表单中嵌入和检索数组

Posted

技术标签:

【中文标题】Rails:从表单中嵌入和检索数组【英文标题】:Rails: embedding and retrieving array from form 【发布时间】:2011-07-29 19:54:57 【问题描述】:

我被 Ruby、Rails 和 html 语法绊倒了。希望一些 Rails 忍者可以帮助我解决可能是微不足道的问题....

发帖 has_many 照片

照片有一个字符串:image属性

在帖子的_form.html.haml 中,我想为与帖子关联的每张照片嵌入(在hidden_field 中)image 属性的内容......然后在提交表单时将其取回。我可以通过 A) 添加 one hidden_field for each photo.image B) 创建单个 array 包含所有关联的photo.images。

我不知道如何最好地嵌入这个......(A)或(B)我都没有完全完善。

# _form.html.haml:
  = form_for @post do |f|

    - if @post.photos.any?
      - @post.photos.each do |photo|        -# (A)
        = f.hidden_field :image_cache       -# (A)
      = f.hidden_field :images_cache        -# (B)
    = f.file_field :photos, :multiple => true

  .actions
    = f.submit 'Save'


#post.rb  (A)
  def image_cache
    self.photos.any? ? photos.first.image : nil   -# works with `first` 
                                                  -# but not sure how to 
                                                  -# pass id of others?!?
  end


#post.rb:  (B)
  def images_cache
    photos.map  |i| i.image 
  end

(A) 的问题是我不知道如何将 photo 传递回 Post 模型以从其中返回 image_cache 属性?!? f.hidden_field :image_cache(photo) 不起作用

(B) 的问题是 Post 模型返回的 images_cache 是一个数组,但一旦嵌入 HTML 页面并由以下 post 请求返回,它就变成了数组的字符串表示形式:[/uploads/tmp/20110729-1216-15902-2013/Before_Green_Flash.JPG, /uploads/tmp/20110729-1216-15902-5934/Before_Green_Flash2.JPG],因此不回复each

我们将不胜感激任何一种或两种情况的帮助!

【问题讨论】:

【参考方案1】:

对于方法 a,为什么不:= f.hidden_field photo.image

【讨论】:

以上是关于Rails:从表单中嵌入和检索数组的主要内容,如果未能解决你的问题,请参考以下文章

如何从标签页的嵌入表单中检索文本框?

Ruby on Rails:以表单提交数组

将从表单检索到的数组数据存储到数据库

从 Django 表单的实例中检索变量

当我尝试从 ruby​​ on rails 上的表单获取输入时,我得到了简单名称的哈希数组瞬间。如何解决?

Rails:从 submit_tag 更改表单操作