2010-10-14 54 views
2

我是新来的铁轨。我想知道关于文件上传过程中的轨道。任何人都可以请帮我... 谢谢, Althaf如何使用rails上传文件?

+6

退房Ruby on Rails的指南(http://guides.rubyonrails.org/form_helpers.html#uploading-files)或谷歌 “轨文件上传” 或 “轨道文件上传插件”,以了解更多信息。最好先做这个研究,然后再回来问一些关于你需要了解更多的部分的更具体的问题。 – Jeff 2010-10-14 12:38:12

+2

或者只是搜索关于该主题的其他问题(“rails文件上传”)的Stackoverflow。我相信你一定会在你打字时看到这些问题出现。 – Matt 2010-10-14 13:00:15

回答

5

通常宝石/插件是用来处理文件上传。我最喜欢的,也许是最普遍的是Paperclip

在你看来,你必须告诉轨形成你上传文件这样的助手:

<%= form_for @model, :html => { :multipart => true } do |form| %> 
+0

=>感谢您的回复。我想知道要写入控制器和模型中的上传代码(如果需要)。我熟悉文件上传的视图部分 – 2010-10-14 12:43:33

+0

@ user475748老兄,你不需要编写任何特殊的代码上传文件。回形针插件有这些代码行。只需按照我在答案中提供的blogpost,检查5分钟的railscast。 – 2010-10-14 12:46:54

+0

@ user475748:按照Paperclip gem的说明操作。它处理文件上传的内部细节,让你只需指定配置值,并让它做其余的:) – Matchu 2010-10-15 02:08:44

1

下面是关于如何上传文件,而无需使用任何宝石,只有一个方法通过使用导轨,

解决方法:=>

def create 
     @photo = Photo.new(photo_params) 
     uploaded_io = params[:photo][:photo] 
     File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file| 
      file.write(uploaded_io.read) 
     end 
     if @photo.save 
      flash[:success] = "The photo was added!" 
      redirect_to root_path 
     else 
      render 'new' 
     end 
     end 


def upload 
    uploaded_io = params[:person][:picture] 
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file| 
    file.write(uploaded_io.read) 
    end 
end 

和你的意见应该包含这个form.html.erb,这是非常简单的,

<%= form_for @photo do |f| %> 
     <%= f.file_field :photo %> 
     <div class="actions"> 
     <%= f.submit "Upload" %> 
     </div> 
    <% end %> 

最后模型应该有,

has_attached_file :image 

。############################# ##################### 您现在可以享受加载任何文件。

谢谢。与铁轨有趣。

Use <video_tag> for viewing video files. 
Use <audio_tag> for viewing audio files. 
Use <object>"link"</object> for viewing PDF or DOC files.