gpt4 book ai didi

ruby-on-rails - 回形针:继续编辑

转载 作者:行者123 更新时间:2023-12-04 05:42:51 27 4
gpt4 key购买 nike

当用户在我的应用程序中编辑某些内容时,即使他们没有更改图像,他们也被迫通过回形针重新上传图像。不这样做会导致错误,因为我validate_presence_of :image。这很烦人。

如果用户根本没有在编辑时提供新图像,我如何才能使 Paperclip 不会更新其属性?

光 Controller 是从 Rails 的脚手架生成器中新鲜出来的。下面提供了其余的源代码。

模型/住宿.rb

class Accommodation < ActiveRecord::Base
attr_accessible :photo
validates_presence_of :photo
has_one :photo
has_many :notifications
belongs_to :user
accepts_nested_attributes_for :photo, :allow_destroy => true
end

Controller /accommodation_controller.rb
class AccommodationsController < ApplicationController
def index
@accommodations = Accommodation.all
end

def show
@accommodation = Accommodation.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:error] = "Accommodation not found."
redirect_to :home
end

def new
@accommodation = current_user.accommodations.build
@accommodation.build_photo
end

def create
@accommodation = current_user.accommodations.build(params[:accommodation])
if @accommodation.save
flash[:notice] = "Successfully created your accommodation."
redirect_to @accommodation
else
@accommodation.build_photo
render :new
end
end

def edit
@accommodation = Accommodation.find(params[:id])
@accommodation.build_photo
rescue ActiveRecord::RecordNotFound
flash[:error] = "Accommodation not found."
redirect_to :home
end

def update
@accommodation = Accommodation.find(params[:id])
if @accommodation.update_attributes(params[:accommodation])
flash[:notice] = "Successfully updated accommodation."
redirect_to @accommodation
else
@accommodation.build_photo
render :edit
end
end

def destroy
@accommodation = Accommodation.find(params[:id])
@accommodation.destroy
flash[:notice] = "Successfully destroyed accommodation."
redirect_to :inkeep
end

end

模型/照片.rb
class Photo < ActiveRecord::Base
attr_accessible :image, :primary
belongs_to :accommodation
has_attached_file :image,
:styles => {
:thumb=> "100x100#",
:small => "150x150>" }
end

最佳答案

你不应该需要 @accommodation.build_photo除了在 new 之外的任何地方行动。

关于ruby-on-rails - 回形针:继续编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4601157/

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