【发布时间】:2012-04-11 09:21:03
【问题描述】:
我在我的 rails 应用程序中遇到回形针问题。我可以将多个文件 (PDF) 附加到我的表单中,但是当我尝试在 show.html.erb 文件中显示超过 1 个附件时出现错误。
在编辑和新视图中工作的代码:
<%= f.fields_for :assets do |asset| %>
<% if asset.object.new_record? %>
<%= asset.file_field :document %>
<% end %>
<% end %>
</div>
<div class="existingPaperclipFiles">
<% f.fields_for :assets do |asset| %>
<% unless asset.object.new_record? %>
<div class="thumbnail">
<%= link_to( image_tag(asset.object.document.url(:thumb)), asset.object.document.url(:original) ) %>
<%= asset.check_box :_destroy %>
</div>
<% end %>
<% end %>
</div>
我创建了一个单独的资产模型来保存与我的设备模型相关的所有附件。当我在显示视图中创建“link_toasset.object.document.url”时,出现 NoMethod 错误。如果有比回形针更好的方法,我想将 .doc、PDF 和图像文件都附加到我的应用程序中,请帮忙!
资产模型:
class Asset < ActiveRecord::Base
belongs_to :equipment
has_attached_file :document, :styles => {:thumb => '150x150#', :medium => '300x300#', :large => '600x600#' }
end
设备型号:
class Equipment < ActiveRecord::Base
validates :equipment_id, presence: true
validates :location, presence: true
has_many :assets, :dependent => :destroy
accepts_nested_attributes_for :assets, :allow_destroy => true
end
我的设备控制器:
class EquipmentController < ApplicationController
def index
@equipment = Equipment.paginate(page: params[:page])
end
def show
@equipment = Equipment.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @equipment }
end
end
def new
@equipment = Equipment.new
5.times {@equipment.assets.build}
end
def create
@equipment = Equipment.new(params[:equipment])
respond_to do |format|
if @equipment.save
format.html { redirect_to @equipment, notice: 'Equipment was successfully added.' }
format.json { render json: @equipment, status: :created, location: @equipment }
else
format.html { render action: "new" }
format.json { render json: @equipment.errors, status: :unprocessable_entity }
end
end
end
def edit
@equipment = Equipment.find(params[:id])
5.times {@equipment.assets.build}
end
def update
@equipment = Equipment.find(params[:id])
respond_to do |format|
if @equipment.update_attributes(params[:equipment])
format.html { redirect_to @equipment, notice: 'Equipment was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @equipment.errors, status: :unprocessable_entity }
end
end
end
def destroy
@equipment = Equipment.find(params[:id])
@equipment.destroy
respond_to do |format|
format.html { redirect_to equipment_url }
format.json { head :no_content }
end
end
private
def correct_user
@Equipment = Equipment.find(params[:id])
redirect_to(root_path) unless current_user?(@Equipment)
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end
非常感谢任何帮助。
【问题讨论】:
-
请包含错误信息
标签: ruby-on-rails ruby paperclip