【问题标题】:How to add ids to hidden field and send it with other data to controller so that allow them to associate with parent model?如何将 id 添加到隐藏字段并将其与其他数据一起发送到控制器,以便它们与父模型关联?
【发布时间】:2012-09-23 16:34:15
【问题描述】:

我有一篇有很多图片的帖子。在一个视图中,我有两个表单,一个带有标准的 post 字段,另一个用于将图片异步发送到pictures_controller,我的 JavaScript 仅接收带有新添加图片的 ID 的回调,尚未与父级关联。如何将 JavaScript 接收到的许多 ID 添加到 post 表单中的隐藏字段,并在 post_controller 循环中发送隐藏字段中的 ID 并将其与 post 模型相关联?我正在尝试从:How to use JQuery-File-Upload to upload multiple images on one page during creating post? 执行第 3 步(有趣的部分)。

帖子视图:

= form_for @post do |f|
  .field
    = f.label :title
    = f.text_field :title
  .field
    = f.label :description
    = f.text_area :description
  = f.hidden_field :picture_ids
  .actions
    = f.submit 'Save'
= form_for @picture, :html => { :multipart => true, :id => "fileupload"  } do |f|
  = f.file_field :image, :multiple => true
  %ul.thumbnails.files

JavaScript(我不知道如何正确地将新收到的 id 添加到隐藏字段,开始时它只包含:[]):

$('#fileupload').fileupload({
...
  completed: function(e, data) {
    console.log(data.result[0].picture_id); //e.g. pure: 505e1d811e7bf2b815000139, 505d80181e7bf2b8150000ab etc.
    $("#post_picture_ids").val(data.result[0].picture_id);
  });
});

post_controller:

def create
  @post = Post.new(params[:post])
  #@post.picture_ids = params[:post][:picture_ids]
end

发帖:

{"utf8"=>"✓",
 "authenticity_token"=>"FZA1rg53Qc21MCkT4YMDdIrkttmiRmdoGhPC7HS8Fx8=",
 "notify"=>{"title"=>"",
 "description"=>"",
 "picture_ids"=>"505e1d811e7bf2b815000139"},
 "commit"=>"Save"}

Mongoid 抛出错误:undefined method 'compact' for #<Picture:0x007faf2513d810>

【问题讨论】:

  • 也发布您的“新”操作.... 505d80931e7bf2b8150000ac 看起来不像ids
  • 在posts_controller 'new' 中,我只有@post = Post.new,照片是通过javascript 通过photos_controller 从Post 表单异步添加的,它给出了IDs,就像来自mongodb 的505d80931e7bf2b8150000ac。这个例子我认为可以用普通的普通 SQL ID 来完成,如'12'、'13'等。

标签: javascript jquery ruby-on-rails ruby-on-rails-3 mongoid3


【解决方案1】:

如果你的post 有_many pictures 映射,

那么你的创建控制器代码应该是

@post.picture_ids = params[:post][:picture_ids]

而不是

@post.picture_ids = (Picture.find(received_post).id)

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多