Carrierwave将错误复数化

时间:2015-03-11 15:14:29

标签: ruby-on-rails carrierwave

我正在尝试使用Carrierwave在我的rails应用中实现基本上传表单。我有一个名为图像的模型,上传者名为 image_path ,我收到错误:

undefined method `images_path' for #<#<Class:0x0000010369ea20>:0x00000103765288>

我不确定为什么它认为它应该找到“images_path”而不是“image_path” - 我在我的应用程序中搜索“images_path”并没有找到任何内容。

这就是目前的一切:

html.erb:

<%= form_for Image.new do |f| %>
    <%= f.error_messages %>
    <%= f.hidden_field :spin_id %>
    <p>
        <%= f.file_field :image_path, multiple: true %>
        <%= f.submit %> 
    </p>
<% end %>

image.rb

class Image < ActiveRecord::Base
    belongs_to :spin

    mount_uploader :image_path, ImagePathUploader
end

image_path_uploader.rb

class ImagePathUploader < CarrierWave::Uploader::Base
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

非常感谢任何帮助,因为我完全难过。

以下是完整错误:

ActionView::Template::Error (undefined method `images_path' for #<#<Class:0x00000104f36da8>:0x000001037e4ec0>):
    40: 
    41:                         </div>
    42:                         <%# add file input stuff here %>
    43:                         <%= form_for Image.new, :html => {:multipart => true} do |f| %>
    44:                             <%= f.error_messages %>
    45:                             <%= f.hidden_field :spin_id %>
    46:                             <p>
  app/views/home/index.html.erb:43:in `block (2 levels) in _app_views_home_index_html_erb__3305799271767470298_2188818660'
  app/views/home/index.html.erb:30:in `block in _app_views_home_index_html_erb__3305799271767470298_2188818660'
  app/views/home/index.html.erb:26:in `_app_views_home_index_html_erb__3305799271767470298_2188818660'


  Rendered /Users/[]/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.6/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.2ms)
  Rendered /Users/[]/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.9ms)
  Rendered /Users/[]/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.6/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (11.1ms)

1 个答案:

答案 0 :(得分:2)

带有新对象的

表单将发布到多个路径(在本例中为images_path)。这是来自Image.new(其中.new_record?是真的)。它是由多态路径方法引起的,如果你想进一步研究它。

这是预期和良好的。在您的路线中,您应该能够创建Image对象,例如:

resources :images

这将创建许多路线。

一个是对images_path网址的POST。这不应该干扰图像中的image_path方法,但是您使用了许多可能令人困惑的类似名称。

要查看您拥有的路由,请从命令行尝试rake routes