2017-05-17 1 views
-1

私のサンプルRuby on Railsアプリには、モデル名Studentがあります。これはスキーマファイルです。Ruby on Railsでフォームを編集すると画像が表示されないのはなぜですか?

create_table "students", force: :cascade do |t| 
t.string "name" 
t.integer "age" 
t.string "image" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
end 

私はpostgreSQL DBを使用しています。そして、私の
* ...アプリ\ビュー\

<%= form_for(student) do |f| %> 
<% if student.errors.any? %> 
<div id="error_explanation"> 
    <h2><%= pluralize(student.errors.count, "error") %> prohibited this student from being saved:</h2> 
    <ul> 
    <% student.errors.full_messages.each do |message| %> 
    <li><%= message %></li> 
    <% end %> 
    </ul> 
</div> 
<% end %> 
<div class="field"> 
<%= f.label :name %> 
<%= f.text_field :name %> 
</div> 
<div class="field"> 
<%= f.label :age %> 
<%= f.number_field :age %> 
</div> 
<div class="field"> 
    <%= f.label :image %><br> 
    <%= f.file_field :image %> 

</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 
<% end %> 

そして、 が作成マイstudents_form.html.erb、インデックスを適切&ショーの仕事が、私はそれがでイメージ名が表示されない形成編集する行くときファイルボタンを選択します。それは空のようです。 私は画像をアップロードするためにcarrierwave gemを使用しています。イメージファイル名を編集ページに表示するにはどうすればよいですか?ありがとうございました。すべての

+0

画像のアップロードフィールドに画像の名前を表示することを正しく理解していますか? – Ozgar

+0

StudentsController.rbとStudent.rb(モデルファイル)を投稿してください。 –

+0

ファイル名を選択ボタンにイメージ名が表示されません。あなたはそれが起こりたい場合は、いくつかのhtml/css/jsの魔法が必要になります。なぜあなたはこの振る舞いを必要としますか? – Iceman

答えて

-2

まずuはUがrails console

s = Student.new 
s.remote_image_url = "http://itc.ua/wp-content/uploads/2017/05/Depositphotos_2337426_original.jpg" 
s.save 

であなたのコードをテストすることができ

mount_uploader :image, ImageUploader 

rails generate uploader Image 

があなたにアップローダーを追加アップローダー学生モデル作成する必要がある場合succsesfull U GET MSG SQLから

+0

これは質問に対する答えではありません。 – Iceman

+0

yeach、これは、私はすでにこれをしています。 – Shamila

0

セキュリティ上の理由から、file_fieldsを自動収集することはできません。フォームに「C:/any/file/on/your.system」を自動的に追加して提出するサイトに行ったとします。いいアイデアではない!

これでできることは、既存のイメージの名前を表示するフォームにカスタムラベルを追加することです。

可愛い場合は、元のラベルを隠すスクリプト(jsまたはjQuery)を追加して、画像がすでに存在する場合はカスタムを表示することもできます。

私は現在私のレール環境にアクセスすることはできませんが、家に帰るときにまだ苦労している場合は、この回答を例で編集します。

EDIT:

さて、あなたの質問は、私は私のプロジェクトで同じ欠陥を持っていたことを思い出しました。私はbootstrap formsを使用して、自分のフォームをもっと努力しなくても良く見えるようにしています。しかし、バニラの宝石はugly file upload fieldsの種類を修正していないので、私はbootstrap filestyleを使用してそれらのブレンドを良くすることに決めました。

これらの宝石のいずれもプレースホルダーを扱っていません。だから私はそれを修正するためにいくつかのjQueryを追加しました。

プロジェクトでこれを実行する場合は、両方の宝石を追加して、コードを次のように変更します。

_form.html.erb:bootstrap initializer file_input.jsで次に

<%= bootstrap_form_for(student, layout: :horizontal) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.number_field :age %> 
    <%= f.file_field :image, data: { placeholder: student.avatar_identifier || "No file selected" } %> 
    <%= f.form_group do %> 
     <%= f.submit %> 
    <% end %> 
<% end %> 

$(document).on('ready page:load', function() { 
    $(":file").filestyle({ 
    buttonText: " Bläddra", 
    buttonBefore: true 
    }); 

    $(":file").each(function() { 
    ph = $(this).data("placeholder"); 
    $(this).filestyle('placeholder', ph); 
    }); 
}); 

は、私は、これはあなたを助けることを願っています!

P.S.私は、あなたが持っていた部分を削除しました。これは、これが作成/更新時の検証エラーにのみ使用されると仮定していたからです。これらのタイプのエラーは、ブートストラップフォームで美しく処理され、手動で追加する必要はありません。

関連する問題