加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Paperclip:继续编辑

发布时间:2020-12-17 01:58:29 所属栏目:百科 来源:网络整理
导读:当用户在我的应用程序中编辑某些内容时,他们不得不通过回形针重新上传他们的图像,即使他们没有更改它.如果不这样做将导致错误,因为我validate_presence_of:image.这很烦人. 如果用户根本不在编辑中提供新图像,如何使其成为Paperclip不会更新其属性? 照片控
当用户在我的应用程序中编辑某些内容时,他们不得不通过回形针重新上传他们的图像,即使他们没有更改它.如果不这样做将导致错误,因为我validate_presence_of:image.这很烦人.

如果用户根本不在编辑中提供新图像,如何使其成为Paperclip不会更新其属性?

照片控制器是Rails的脚手架发电机新鲜的.其余的源代码如下所示.

车型/ accommodation.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

控制器/ 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

车型/ photo.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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读