2

イメージ名をデータベースに保存するのに問題があります。フォルダへの画像のアップロードは正常に機能しますが、画像名はデータベースに保存されません

モデルコード:

 class Post < ActiveRecord::Base
   attr_accessible :name, :imag
   attr_accessor :imag

  def self.save(upload)
    name = upload['imag'].original_filename
    directory = 'public/data'
    # render :text => directory
    # create the file path
    path = File.join(directory,name)
    # write the file
    File.open(path, "wb") { |f| f.write(upload['imag'].read)}
  end

end

コントローラーコード:

  def create
    @a=params[:post][:imag].original_filename  /* how to pass in this image name into params[:post] */
    pos= Post.save(params[:post])
    if pos
      redirect_to :action =>"index"
    else
      redirect_to :action =>"posts"
    end
  end

誰でもこれをアーカイブするように案内してください。前もって感謝します。

4

3 に答える 3

0

これは、保存ヘルパーが ActiveRecord 保存と競合し、そのメソッドで何も保存していないためです。

電話

super(upload) 

保存方法で(最初の行にする必要があります)

于 2013-10-29T17:52:26.007 に答える
0

私は解決策を見つけました。Post.create 関数で画像の元のファイル名を手動で追加しました。

コントローラーコード:

 def create
            Post.super(params[:post])
            pos= Post.create(:name=>params[:post][:name],:image=>params[:post][:image].original_filename) /* here is added image value from uploaded input */
            if pos
              redirect_to :action =>"index"
            else
              redirect_to :action =>"posts"
            end

          end

モデルコード:

class Post < ActiveRecord::Base
   attr_accessible :name, :image

  #attr_accessor :imag
  def self.super(upload)
    name = upload['image'].original_filename
    directory = 'public/data'
   # render :text => directory
    # create the file path
    path = File.join(directory,name)
    # write the file
    File.open(path, "wb") { |f| f.write(upload['image'].read)}
  end

end
于 2013-10-30T15:13:00.343 に答える
0

self.saveカスタムクラス メソッドで ActiveRecord 保存メソッドをオーバーライドしています。また、paperclip などのアップロード gem を使用することをお勧めします。

于 2013-10-29T17:55:30.207 に答える