4

ユーザーが自分自身についての 6 つの単語を入力して画像をアップロードできる Rails アプリを作成しています。これらの 6 つの単語を画像に追加します。

「静的」テキストを使用してテキスト追加を機能させる方法は知っていますが、ユーザーが 6 つの単語を入力するときに入力するフォームにテキスト フィールドをリンクする方法はわかりません。

現在、「テキスト」は静的で、私が入れたものは何でもです。

以下が機能しないのはなぜですか?

process :textify => <%= @user.sixwords %> 

ここに私が持っているものがあります:

process :textify => 'Text'

  def textify(phrase)
    manipulate! do |img|
    img = img.sepiatone

  title = Magick::Draw.new

  title.annotate(img, 0,0,0,40, phrase) {
    self.font_family = 'Helvetica'
    self.fill = 'white'
    self.pointsize = 32  
  }

  img = img.write('newimg.gif')
 end
end

私がn00bを少し減らすのを手伝ってくれてありがとう!:)

4

1 に答える 1

4

友人の助けを借りてそれを理解しました。

変更する必要があるのはこれだけです。

title.annotate(img, 0,0,0,40, model.name) {
    self.font_family = 'Helvetica'
    self.fill = 'white'
    self.pointsize = 32  
  }

これが機能するのは、Carrierwave がmodel、アップローダがアタッチされているインスタンス オブジェクトを指す変数として使用するためです。私のモデルでnameは、ユーザーのテキスト入力を受け取ったフォーム フィールドの名前でした。

他の使用例model.field_nameでは、に付けた名前をそのまま使用しますfield_name

私の友人は私に説明するためにこのように書きました。他の人に役立つ場合に備えて、ここに貼り付けます。

ImageUploader の「process」メソッドは、ファイルがメモリにロードされ、Ruby によって解釈されるときに 1 回だけ呼び出される静的クラス メソッドです。基本的には、ImageUploader のすべてのインスタンスに対して、後でどの処理メソッドを呼び出す必要があるかを内部的に追跡しているだけです。textify メソッドは、作成される各 ImageUploader オブジェクト インスタンスで呼び出されるインスタンス メソッドです。Athlete モデルで呼び出す「mount_uploader」クラス メソッドは、Ruby マジックを実行して ImageUploader インスタンスをインスタンス化し、アスリート インスタンス オブジェクトをそれに渡し、「モデル」と呼ばれるインスタンス メソッドとして ImageUploader オブジェクト インスタンスで使用できるようにします。

于 2012-10-02T19:21:15.233 に答える