2015-09-16 2 views
2

Я использую CarrierWave для обработки загрузки изображений для моего приложения rails (rails 4.1).undefined method `images_path 'для # <#

Этот вопрос я получаю эту

неопределенный метод `images_path» для # < #

ошибка каждый раз попытаться пойти/изображение/новый.

Я проверил свои маршруты, мои взгляды, мой контроллер, мою модель и мой загрузчик, и все кажется прекрасным. любые советы или идеи?

Код:

image_uploader.rb:

class ImageUploader < CarrierWave::Uploader::Base 

storage :file 

def store_dir 
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 

конец

/models/image.rb:

class Image < ActiveRecord::Base 

mount_uploader :image, ImageUploader 

end 

Rel Эвант Маршруты:

Rails.application.routes.draw do 

resources :image 

image_controller.rb

class ImageController < ApplicationController 


def new 
    @image = Image.new(:image => params[:image_params]) 
end 


def create 
@image = Image.create(image_params) 

if @image.save 
    redirect_to @image 
else 
    render 'new' 
end  
end 


def show 
end 

private 


def image_params 
params.require(:image).permit(:title, :description, :image 
end 

def find_image 
@image = Image.find(params[:id]) 
end 
end 

new.html.erb

<div class="col-md-12 col-md-offset-2"> 
    <%= form_for @image, html: { multipart: true } do |f| %> 
    <%= f.file_field @image %> 
    <p id="uploadClick">Click to Upload</p> 

<br> 

    <%= submit_tag 'Upload Image', id: 'submitPhoto' %> 

<% end %> 
</div> 

Любая помощь с этим было бы весьма признателен, спасибо!

РЕШЕНИЕ:

в new.html.erb мне пришлось изменить:

<%= form_for @asset, html: { multipart: true } do |f| %> 

в

<%= form_for :asset, html: { multipart: true } do |f| %> 

мое новое действие теперь работает правильно после этих изменений, надежда это помогает людям в будущем.

ответ

1

Try не меняется resources :image к resources :images в routes.rb и изменить new и create методы в контроллере, как ниже

def new 
    @image = Image.new 
end 

def create 
    @image = Image.new(image_params) 

    if @image.save 
    redirect_to @image 
    else 
    render 'new' 
    end  
end 
+0

Нет счастья, не уверен, что здесь происходит. У меня было все, что работает с paperclip fine. Только причина, по которой я перешел на CarrierWave, - это то, что мне нужно разрешить пользователям загружать через remote_url, скрепка не похожа на IO. – Colinm

+0

Сегодня утром я раздели все и перезапустил, вместо этого модель и таблица под названием Asset затем добавили на нее строку Image: и я использую это. Но теперь вместо Image_path я получаю ошибку Asset_path. Очень странно. – Colinm

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