将Paperclip转换为Carrierwave |未定义的方法`存在?'

时间:2014-10-03 00:54:59

标签: ruby-on-rails paperclip carrierwave

我根据有关carrierwave的文档:https://github.com/carrierwaveuploader/carrierwave以及来自此博客的建议将我的应用从paperclip转换为carrierwave:http://bessey.io/blog/2013/04/07/migrating-from-paperclip-to-carrierwave/

但是我为“存在”得到了一个未定义的方法错误?'在文章#show中。

这是我的_form.html.erb代码

 <%= form_for(@article, html: {multipart: true}) do |f| %>
       .
       .
       . 
        <p>
            <% if @article.image.exists? %>
                <%= image_tag @article.image.url %><br />
            <% end %>
            <%= f.label :image, "Attach a New Image" %><br />
            <%= f.file_field :image %>
         </p>
        <p>
            <%= f.submit %>
        </p>
        <% end %>

这是文章#show

def show
        @article = Article.find(params[:id])
    end

文章模型

class Article < ActiveRecord::Base
    mount_uploader :image, ImageUploader, :mount_on => :image
    default_scope -> { order('created_at DESC') }
    has_many :comments
    has_many :taggings
    has_many :tags, through: :taggings
    # has_attached_file :image
    # validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/gif", "image/png"]

    def total_pages
        @articles = Article.all
    end

    def tag_list
        self.tags.collect do |tag|
            tag.name
        end.join(", ")
    end

    def tag_list=(tags_string)
        tag_names = tags_string.split(",").collect{|s| s.strip.downcase}.uniq
        new_or_found_tags = tag_names.collect { |name| Tag.find_or_create_by(name: name) }
        self.tags = new_or_found_tags
    end
end

如果您需要查看其他内容,请与我们联系。我还在学习rails,而且我不知道在哪里需要调试这个特定的错误。

1 个答案:

答案 0 :(得分:1)

要检查图像是否存在,您可以使用

<% if @article.image_url %>
     <%= image_tag @article.image.url %><br />
<% end %>

有关在应用中设置运营商wave的详情,请查看此剧集railscasts