我有2个型号(Book& Image)
class Book < ActiveRecord::Base
has_many :images
accepts_nested_attributes_for :images
end
class Image < ActiveRecord::Base
belongs_to :book
has_attached_file :data, :path => ":rails_root/public/system/datas/:book_id/:style/:basename.:extension",
:url => "/system/datas/:book_id/:style/:basename.:extension",
:styles => {
:thumb => ["150x172#",:jpg],
:large => ["100%", :jpg]
}
validates_attachment_presence :data
validates_attachment_content_type :data,
:content_type => ['image/jpeg', 'image/pjpeg',
'image/jpg', 'image/png', 'image/tiff', 'image/gif'], :message => "has to be in a proper format"
end
我想修改我的应用程序,以便当用户创建新书并上传图片时,他们会被重定向到特定页面,否则会被定向到“显示”页面
我已在Book Controller中修改了我的'create'操作,如下所示:
def create
@book = Book.new(params[:book])
if @book.save
flash[:notice] = 'Book was successfully created'
if params[:book][:image][:data].blank? # === this line is giving me errors
redirect_to @specific_page
else
redirect_to show_book_path(@book.id)
end
else
render :action => 'new'
end
end
我想测试一下,如果上传了一张图片或多张图片,应该将用户定向到其他页面
以下if条件错误:
if params[:book][:image][:data].blank? # === this line is giving me errors
如果有人可以建议我如何查看图片是否附在新书上,我将不胜感激。
请注意,我只想检查新上传的图片,而不是所有与图书相关的图片。
由于
答案 0 :(得分:1)
您可以使用Ruby的FileTest
模块。有一个exists?
方法,如果给定文件存在则返回true,否则返回false。
请参阅API文档here。
答案 1 :(得分:1)
首先,我不确定您的视图文件。但是如果用户没有选择/上传单个图像,则params [:book] [:image]将为零,因此'如果params [:book] [:image] [:data] .blank?'行给出错误。
尝试检查与图书实例相关联的“图片”实例
if @book.images.any?
redirect_to @specific_page