2015-03-11 2 views
0

Я пытаюсь реализовать базовую форму загрузки в своем приложении rails с помощью Carrierwave. У меня есть модель под названием изображения с пользователем под названием image_path и я получаю сообщение об ошибке:Ошибка Carrierwave pluralize

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

Я не знаю, почему он думает, что он должен будет найти «images_path» вместо «image_path» - I искал «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) 
+0

Попробуйте переименовать его в 'image_file' и попробуйте снова воспроизвести ошибку. –

+0

Это так странно - я изменил все на image_file, как вы предложили, и по-прежнему ищет images_path. В моем приложении нет «image_path» или «images_path», и я, конечно же, перезапустил сервер. – scientiffic

+0

Требуется полная обратная ошибка. –

ответ

2

форма с новыми объектами разместит на множественный путь (в данном случае images_path). Это происходит из Image.new (где .new_record? True). Это вызвано методом полиморфного пути, если вы хотите изучить его дальше.

Ожидается и хорошо. В маршрутах, вы должны иметь возможность создавать объект изображения, например:

resources :images 

Это создаст ряд маршрутов.

Будет POST к URL-адресу images_path. Это не должно мешать методу image_path на изображении, но вы используете много похожих имен, которые могут ввести в заблуждение.

Чтобы узнать, какие маршруты у вас, попробуйте использовать rake routes из командной строки.

+0

ah Я создал пустой контроллер для моей модели изображения. Спасибо! – scientiffic

Смежные вопросы