载波复数误差
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
。
我正在尝试使用 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
。