未定义的方法`images_path'对于#<#

时间:2015-09-16 01:18:10

标签: ruby-on-rails carrierwave

我正在使用CarrierWave处理我的rails应用程序的图像上传(rails 4.1)。

问题是我得到了这个

  

未定义的方法`images_path'对于#<#

每次尝试转到/ image / new时都会出现

错误。

我检查了我的路线,我的观点,我的控制器,我的模型和我的上传器,一切似乎都很好。任何建议或想法?

代码:

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

相关路线:

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>

非常感谢任何帮助,谢谢!

SOLUTION:

new.html.erb中的

我不得不改变:

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

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

我的新动作现在可以在这些更改后正常运行,希望这有助于将来的人们。

1 个答案:

答案 0 :(得分:1)

尝试将resources :image更改为resources :images中的routes.rb并更改控制器中的newcreate方法,如下所示

def new
  @image = Image.new
end

def create
  @image = Image.new(image_params)

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