我有一个模型用户,它嵌入了照片(与carrier_wave_direct一起使用)。在photo.rb模型中,我添加了一个字段描述。 这是photo.rb(carrier_wave_direct):
class Photo
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :user
mount_uploader :file, ImageUploader
field :file, type: String
field :description, type: String
end
这是user.rb:
class User
...
accepts_nested_attributes_for :photos, allow_destroy: true, :reject_if => proc {|attributes| attributes['file'].blank?}
...
end
这是users_controller.rb:
def create
@user = users.build(user_params)
if @user.save
@user.photos.each do |photo|
unless photo.file.file == nil
photo.save!
end
end
else
render :new
end
end
def update
if @user.update_attributes(user_params)
@user.photos.each do |photo|
unless photo.file.file == nil
photo.save!
end
end
...
end
def user_params
params.require(:user).permit(
:photos_attributes => [:id, :description, :file, :_destroy]
)
end
我可以在控制台中看到启动参数具有来自表单的正确输入的字段描述,但我无法保存它。照片很好保存。 表格:
<%= f.fields_for :photos do |photo_f| %>
<%= render partial: 'photo_fields', locals: { f: photo_f } %>
<%= link_to_add_association raw('<i class="fi-plus"> add a photo</i>'), f, :photos %>
<% end %>
在部分嵌套字段中:
<div class="nested-fields">
<% if f.object.file.to_s.empty? %>
<%= f.file_field :file, label: "Upload a photo." %>
<% else %>
<%= image_tag f.object.file %>
<% end %>
<%= f.input :description, label: false, as: :text %>
</div>
我真的不知道如何将描述字段保存到模型中,它在params中传递,我在控制台中看不到任何错误消息。在show视图中,如果我对用户执行.inspect,则说明字段为nil(因为它无法保存)