让Paperclip在Rails中工作

时间:2010-04-23 08:46:15

标签: ruby-on-rails ruby-on-rails-plugins paperclip

我已经安装了Paperclip插件,试图上传我的kase模型的头像。出于某种原因,选择文件按钮显示,我可以选择一个文件 - 但是当我点击更新kase时 - 它会转到显示页面,但是我会看到missing.png而不是所选图像。

kase.rb

class Kase < ActiveRecord::Base
def self.all_latest
find(:all, :order => 'created_at DESC', :limit => 5)
end
def self.search(search, page)
paginate :per_page => 5, :page => page,
:conditions => ['name like ?', "%#{search}%"],
:order => 'name'
end
 # Paperclip
 has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

kases_controller.rb

# GET /kases/new
# GET /kases/new.xml
def new
 @kase = Kase.new

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @kase }
end
end

new.html.erb

<% content_for :header do -%>

例     &lt;%end - %&gt;

<% form_for(@kase) do |f| %>
<%= f.error_messages %>

<ul id="kases_new">

<li> <%= f.file_field :avatar %></li>

<li>Job Ref.<span><%= f.text_field :jobno %></span></li>

<li>Case Subject<span><%= f.text_field :casesubject %></span></li>

<li>Transport<span><%= f.text_field :transport %></span></li>

<li>Goods<span><%= f.text_field :goods %></span></li>

<li>Date Instructed<span><%= f.date_select :dateinstructed %></span></li>

<li>Case Status<span><%= f.select "kase_status", ['Active', 'On Hold', 'Archived'] %>       </span></li>

<li>Client Company Name<span><%= f.text_field :clientcompanyname %></span></li>

<li>Client Company Address<span><%= f.text_field :clientcompanyaddress %></span></li>

<li>Client Company Fax<span><%= f.text_field :clientcompanyfax %></span></li>

<li>Case Handler Name<span><%= f.text_field :casehandlername %></span></li>

<li>Case Handler Tel<span><%= f.text_field :casehandlertel %></span></li>

<li>Case Handler Email<span><%= f.text_field :casehandleremail %></span></li>

<li>Claimant Name<span><%= f.text_field :claimantname %></span></li>

<li>Claimant Address<span><%= f.text_field :claimantaddress %></span></li>

<li>Claimant Contact<span><%= f.text_field :claimantcontact %></span></li>

<li>Claimant Tel<span><%= f.text_field :claimanttel %></span></li>

<li>Claimant Mob<span><%= f.text_field :claimantmob %></span></li>

<li>Claimant Email<span><%= f.text_field :claimantemail %></span></li>

<li>Claimant URL<span><%= f.text_field :claimanturl %></span></li>

<li>Comments<span><%= f.text_field :comments %></span></li>

</ul>

<div class="js_option">
<%= link_to_function "Show financial options.", 
"Element.show('finance_showhide');"
%>
</div>

<div id="finance_showhide" style="display:none">

<ul id="kases_new_finance">

<li>Invoice Number<span><%= f.text_field :invoicenumber %></span></li>
<li>Net Amount<span><%= f.text_field :netamount %></span></li>
<li>VAT<span><%= f.text_field :vat %></span></li>
<li>Gross Amount<span><%= f.text_field :grossamount %></span></li>
<li>Date Closed<span><%= f.date_select :dateclosed %></span></li>
<li>Date Paid<span><%= f.date_select :datepaid %></span></li>

</ul>

<div class="js_option">
<%= link_to_function "I'm confused! Hide financial options.", 
"Element.hide('finance_showhide');"
%>
</div>

</div>

<p>
<%= f.submit "Create" %>
</p> 
<% end %>

<%= link_to 'Back', kases_path %>

我已经尝试将

  • &lt;%= f.file_field:avatar%&gt;
  • 以自己的形式放在同一页面上,但这并没有什么区别。< p>

    1 个答案:

    答案 0 :(得分:5)

    修改 在Rails 3.1中,一旦表单中有:html => { :multipart => true }file_field将自动呈现在表单中。

    而不是

    <% form_for(@kase) do |f| %>
    

    使用

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

    内容类型“multipart / form-data”应该用于提交表单 包含文件。