载波复数误差

Carrierwave pluralize error

我正在尝试使用 Carrierwave 在我的 rails 应用程序中实现基本的上传表单。我有一个名为 image 的模型和一个名为 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)

具有新对象的表单将 post 到复数路径(在本例中为 images_path)。这来自 Image.new(其中 .new_record? 为真)。多态路径方法导致的,如果你想进一步研究它。

这是意料之中的好事。在你的路线中,你应该能够创建一个图像对象,例如:

resources :images

这将创建多条路线。

一将是POST到images_pathurl。这不应该干扰图像中的 image_path 方法,但是您使用了很多可能会造成混淆的相似名称。

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