Ruby on Rails - 将照片添加到未保存的模型

时间:2011-11-05 13:30:54

标签: ruby-on-rails ruby

我有多态模型,存储有关照片的数据。我正在将该模型用于许多类型的内容,例如用户照片(content_type:User,content_id:user_id),游戏截屏等。直到现在我才将该照片模型仅用于已经存在的内容。现在我需要在创建阶段为某些模型添加一些照片。

问题是,我无法将content_id传递给partial,因为模型在保存之前没有它。

请在下面找到适用于现有型号的代码。

photos/add_photo部分代码:

    <% form_for(@photo, :html => { :multipart => true }) do |f| %>
        <%= f.error_messages %>
        <%= f.hidden_field :attachable_id, :value => content.id %>
        <%= f.hidden_field :attachable_type, :value => content.class.name %>
        file inputs goes here...
        <%= f.submit "Upload" %>
    <% end %>

这里我如何在Game视图中将示例变量传递给partial:

    <%= render :partial => 'photos/add_photo', :locals => { :content => @game } %>

现在我希望让用户将屏幕截图添加到新创建的报告中。我有控制器:

    def new
      @raport = Raport.new
    end

我如何强制模型保留或生成ID?也许我应该找出另一个解决方案并改变整个代码?

1 个答案:

答案 0 :(得分:0)

我会使用ajax用随机令牌哈希保存照片,然后让ajax响应使用该令牌哈希更新新对象表单中的隐藏字段。然后当你保存新对象时,有一个回调通过令牌找到照片并更新可附加的id&amp;类型字段。