我有多态模型,存储有关照片的数据。我正在将该模型用于许多类型的内容,例如用户照片(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?也许我应该找出另一个解决方案并改变整个代码?
答案 0 :(得分:0)
我会使用ajax用随机令牌哈希保存照片,然后让ajax响应使用该令牌哈希更新新对象表单中的隐藏字段。然后当你保存新对象时,有一个回调通过令牌找到照片并更新可附加的id&amp;类型字段。