我在使用回形针上传多个文件时遇到问题。 我试着在这里遵循这个指南 guide
我的模型的结构是:
用户has_many trip_images
然后trip_images has_attached_file:照片
尝试上传新照片时没有任何错误,但我无法在用户显示视图中显示它们。我很确定这不仅仅是这里的错误观点。
错误:
unexpected keyword_do, expecting keyword_end '; @trip_images do |t| ^ C:/row/map/app/views/user/show.html.erb:22: syntax error, unexpected keyword_ensure, expecting end-of-input
到目前为止,这就是我所拥有的。
user.rb
has_many :trip_images, :dependent => :destroy
trip_image.rb
belongs_to :user
has_attached_file :photo
validates_attachment_presence :photo
user_controller.rb
def show
@user = User.find(params[:id])
@trip_images = @user.trip_images
end
...
def create
@user = User.new(user_params)
if @user.save
if params[:photos]
params[:photos].each { |photo|
@user.trip_images.create(photo: photo) }
end
redirect_to(:action => 'index')
else
render('new')
end
end
...
private
def user_params
params.require(:user).permit(:name, :email, :trip_images, :photo)
end
trip_images_controller.rb 已移除
def index
@user = user.find(params[:user_id])
@trip_images = @user.trip_images
respond_to do |format|
format.html # index.html.erb
format.json { render json: @trip_images }
end
end
# GET /trip_images/1
# GET /trip_images/1.json
def show
@trip_image = trip_image.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @trip_image }
end
end
# GET /trip_images/new
# GET /trip_images/new.json
def new
@user = user.find(params[:user_id])
@trip_image = @user.trip_images.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @trip_image }
end
end
# GET /trip_images/1/edit
def edit
#@user = user.find(params[:user_id])
@trip_image = trip_image.find(params[:id])
# @trip_image = trip_image.find(params[:id])
end
# POST /trip_images
# POST /trip_images.json
def create
@trip_image = trip_image.new(params[:trip_image])
if @trip_image.save
respond_to do |format|
format.html {
render :json => [@trip_image.to_jq_upload].to_json,
:content_type => 'text/html',
:layout => false
}
format.json {
render :json => [@trip_image.to_jq_upload].to_json
}
end
else
render :json => [{:error => "custom_failure"}], :status => 304
end
end
....
private
def trip_image_params
params.require(:trip_image).permit(:description, :user_id, :photo)
end
用户/ show.html.erb
<% @trip_images do |t| %>
<%= t.photo_file_name %>
<%= image_tag t.photo_url %>
<% end %>
因此,在最后一次运行中,我希望用户上传照片,然后在各自的“显示”视图中显示这些照片。
谢谢你的时间!
答案 0 :(得分:0)
您的代码存在一些问题:
<% @trip_images do |t| %>
<%= t.photo_file_name %>
<%= image_tag t.photo_url %>
<% end %>
这是一篇关于这个主题的好文章:http://www.railscook.com/recipes/multiple-files-upload-with-nested-resource-using-paperclip-in-rails/
Katz和Bigg的“Rails 3 in Action”第9章逐步介绍了实施过程。网上有很多pdf文件。