我正在使用CarrierWave处理我的rails应用程序的图像上传(rails 4.1)。
问题是我得到了这个
每次尝试转到/ image / new时都会出现未定义的方法`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
相关路线:
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| %>
我的新动作现在可以在这些更改后正常运行,希望这有助于将来的人们。
答案 0 :(得分:1)
尝试将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