gpt4 book ai didi

ruby-on-rails - 您可以编辑/更新也是嵌套属性的多态模型吗?

转载 作者:行者123 更新时间:2023-12-03 16:20:49 24 4
gpt4 key购买 nike

我正在构建一个相册,其中用户有很多相册,每个相册都有很多照片。

专辑类

Class Album < ActiveRecord::Base

attr_accessible :photos_attributes, :name
has_many photos, :as => imageable
accepts_nested_attributes_for :photos

end

摄影课

Class Photo < ActiveRecord::Base

attr_accessible :description, :location
belongs_to :imageable, :polymorphic => true

end

相册 Controller 方法

def create
@album = current_user.albums.build(params[:album])
if @album.save
redirect_to @album, :notice => "Successfully created album."
else
render :action => 'new'
end
end


def edit
@album = Album.find(params[:id])
end


def update
@album = Album.find(params[:id])
if @album.update_attributes(params[:album])
redirect_to @album, :notice => "Successfully updated album."
else
render :action => 'edit'
end
end

编辑专辑表格

<%= form_for @album do |f| %>
<%= f.label :album_name %><br />
<%= f.text_field :name %>

<%= f.fields_for :photos do |photo| %>
<%= photo.label :photo_description %>
<%= photo.text_field :description %>

<%= photo.label :photo_location %>
<%= photo.text_field :location %>
<% end %>

<% end %>

问题是,当提交编辑表单时,photos_attributes 以散列形式出现,rails 没有正确更新它。

  Parameters: { "album"=>{"user_id"=>"1", "name"=>"Lake Tahoe", 
"photos_attributes"=>{"1"=>{"description"=>"Top of the Mountain!", "id"=>"2"},
"2"=>{"description"=>"From the cabin", "id"=>"5"}}},
"commit"=>"Update Ablum", "id"=>"10"}

与 photos_attributes 散列一起发送的 ID 是数据库中照片表中的实际 ID。无论出于何种原因,如果用户编辑照片描述或位置,rails 都不会更新它们。我相信这与照片具有多态性这一事实有关。

有人可以帮忙吗??我已经尝试了几个小时并在整个网络上进行了搜索,但未能找到解决方案。

谢谢!

最佳答案

这可能取决于您使用的 Rails 版本。我相信 < 3.2 需要 has_many 关联上的自动保存属性。您可能只想添加以确保安全,然后看看是否可以解决问题。

此外,请检查您的日志以确保您在请求期间没有收到任何警告。

关于ruby-on-rails - 您可以编辑/更新也是嵌套属性的多态模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com