【发布时间】:2013-08-11 18:21:31
【问题描述】:
Rails 3.2.14 上的新手,在 Heroku 上进行测试,使用 s3_direct_upload gem 将图像文件上传到 S3。
我的宝石工作正常。拖放、进度条和直接上传到 S3 效果很好。上传与附件模型相关联。新记录在上传时正确创建。到目前为止还不错。
我遇到的问题是我想设置新记录的parent_id 字段但不知道如何传递它。gem 不使用常规表单提交上传,它是通过javascript处理:
<%= s3_uploader_form callback_url: attachments_url, callback_param:
"attachment[attachment_url]", id: "myS3Uploader" do %>
<%= file_field_tag :file, multiple: true %>
<% end %>
attachments_controller.rb中的创建动作:
def create
@attachment = Attachment.create(params[:attachment])
end
调用一个javascript视图create.js.erb:
<% if @attachment.new_record? %>
alert("Failed to upload attachment: <%= j @attachment.errors.full_messages.join(', ').html_safe %>");
<% else %>
$("#attachments").prepend("<%= j render(@attachment) %>");
<% end %>
检查记录保存是否有效,并将新的上传缩略图添加到当前视图。
由于我处理的不是常规表单或create 操作,我有点难过。
我可以使用before_save 在附件模型中设置默认值:
before_save :set_defaults
def set_defaults
self.name = "Photo"
self.parent_id = 1
end
但parent_id 将在创建父对象(即博客文章)期间在完成上传的页面上定义。
我知道我应该使用has_many 和belongs_to,它们已经设置好并且工作正常,但是由于我没有使用常规表单来提交数据,所以我不知道如何分配 parent_id。
我尝试在表单中传递parent_id 并在模型中访问它:
<%= s3_uploader_form callback_url: attachments_url(:parent_id => 99), callback_param:
"attachment[attachment_url]", id: "myS3Uploader" do %>
它不起作用,我知道我不应该访问模型内的参数。
任何帮助我度过这一点的帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails has-many belongs-to