我认为未定义的方法

undefined method in my view

我正在使用载波 (https://www.youtube.com/watch?v=GnVIRa7Jr6E) 来让某人获取和 post 图像。但是,在我的 show.html.erb 文件中,它说我有一个未识别的方法:

<%= image_tag @article.image_tag.to_s %>

"image_tag" 是我未定义的方法

在我的控制器中:

private
      def article_params
          params.require(:article).permit(:title, :text, :image_tag)
      end

需要的话我有绘画模型(painting.rb):

class Painting < ActiveRecord::Base
    attr_accessable :gallary_id, :name, :image
    belongs_to :gallary
    mound_uploader :image, ImageUploader
end

我认为你应该使用:

<%= image_tag @article.image %> or maybe <%= image_tag @article.image.url %>

您在 Github 上的代码有些奇怪。您的文章 class 没有图片或上传器。而且这幅画class也和Article没有关系

如果你想尝试一些东西来测试载波,我建议你为文章添加一个迁移让我们说一个缩影。然后将上传器挂载到这个字段上。然后在你的视图中调用它。

载波文档应该有用:https://github.com/carrierwaveuploader/carrierwave

编辑

您可以执行以下操作(简单实验):

首先让我们为文章添加一个新栏目。

rails g migration addImageToArticle image:string

运行迁移

rake db:migrate

在文章上安装上传器class:

class Article < ActiveRecord::Base
    has_many :comments, dependent: :destroy
    validates :title, presence: true,
                      length: { minimum: 5 }

    mount_uploader :image, ImageUploader
end

更新您的 ArticlesController

params.require(:article).permit(:title, :text, :image_tag, :image)

在表单中添加字段:

<%= f.file_field :image %>

然后在视图中使用它(articles/show)

<%= image_tag @article.image.url %> or <%= image_tag @article.image_url %> (as the carrierwave doc suggests)

现在应该可以了!

如果您是 Rails 的新手,我也会推荐这个视频:http://railscasts.com/episodes/253-carrierwave-file-uploads