回形针文件无法上传

时间:2013-12-14 13:58:13

标签: ruby-on-rails ruby paperclip

我无法使用paperclip进行文件上传。 我正在学习本教程

http://larsgebhardt.de/parse-xml-with-ruby-on-rails-paperclip-and-nokogiri/

这就是我所做的:

route.rb:

  resources :users do
    resources :rides do
      resources :comments
    end
    resources :challenges do
      get "accept"
      post 'accept'
    end
  end

...

validates :gpx, presence: true

rides.rb:

  require 'nokogiri'

  class Ride < ActiveRecord::Base
      belongs_to :user
      has_many :comments, dependent: :destroy
      has_many :challenges

      # Tracksegments
      has_many :tracksegments, :dependent => :destroy
      has_many :points, :through => :tracksegments

      has_attached_file :gpx

create_rides.rb

  add_attachment :rides, :gpx

rides/new.html.erb

<h1>New Ride</h1>

<%= form_for [@user,@ride] do |f| %>
  <div>
    <%= f.label :name, :class => 'control-label' %>
    <div>
      <%= f.text_field :name, :class => 'text_field' %>
    </div>
  </div>

  <div>
    <%= f.label :gpx, :class => 'control-label' %>
    <div>
      <%= f.file_field :gpx %>
    </div>
  </div>

  <div>
    <%= f.submit %>
  </div>
<% end %>

<div>
  <%= link_to 'Back', user_rides_path %>
</div>

一切都很好,但文件没有上传。由于model.rb中的当前验证集,页面卡住了。有什么问题?

1 个答案:

答案 0 :(得分:1)

在表单标记中尝试此操作

<%= form_for [@user,@ride], :html => { :multipart => true } do |f| %>

我知道paperclip喜欢数据库的这个设置

def self.up
  change_table :rides do |t|
    t.attachment :gpx
  end
end

def self.down
  drop_attached_file :rides, :gpx
end

最后检查你的Rides Controller并确保:gpx是一个属性。如果你使用的是Rails4,并且有一个默认配置,那么在Rides Controller的底部应该是你的ride_params并确保:gpx是允许的。

相关问题