上传图片和文件padrino

时间:2016-06-10 11:14:47

标签: ruby sinatra padrino

我想把索引图片放到我博客的帖子中 并在管理员面板的“新帖子”中有一个上传表单 表格是这样写的:

    - error = @post.errors.include?(:file)
%fieldset.control-group{:class => error ? 'has-error' : ''}
  =f.label :file, :class => 'control-label'
  .controls
    =f.file_field :file ,:name => 'file'



- error = @post.errors.include?(:title)
%fieldset.control-group{:class => error ? 'has-error' : ''}
  =f.label :title, :class => 'control-label'
  .controls
    =f.text_field :title, :class => 'form-control input-large input-with-feedback', :autofocus => true
    %span.help-inline=error ? f.error_message_on(:title, :class => 'text-error') : pat(:example)
- error = @post.errors.include?(:body)
%fieldset.control-group{:class => error ? 'has-error' : ''}
  =f.label :body, :class => 'control-label'

  .controls
    ~f.text_area :body, :class => 'form-control input-large input-with-feedback'
    %span.help-inline=error ? f.error_message_on(:body, :class => 'text-error') : pat(:example)

.form-actions
  =f.submit pat(:save), :class => 'btn btn-primary'
   
  =f.submit pat(:save_and_continue), :class => 'btn btn-info', :name => 'save_and_continue'
   
  =link_to pat(:cancel), url(:posts, :index), :class => 'btn btn-default'

但我不知道在保存文件的功能中我必须做些什么。

1 个答案:

答案 0 :(得分:0)

易于理解的指南(假设您使用的是activerecord。否则请在示例中更改第1行)。

  1. carrierwave添加到您的Gemfile中,然后执行bundle install
  2. 生成迁移:padrino g AddImageToPosts image:string并执行它。
  3. mount_uploader :image, Uploader添加到您的帖子模型。
  4. lib文件夹中创建一个名为uploader.rb的文件(或其他任何内容,但请不要忘记在第3步更改Uploader。)
  5. lines from 7 to 83添加到uploader.rb(不要忘记取消注释行,并修复它们以符合您的需要)。
  6. 浏览管理员,单击浏览按钮进行文件上传 - 从文件系统中选择一个文件 - 您已完成。

    示例(第3步)

    require 'carrierwave/orm/activerecord'
    class Post < ActiveRecord::Base
        belongs_to :category
        mount_uploader :image, Uploader
        ...
    end