質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3141閲覧

Rails: form_for / file_fieldへのclass指定

innjera

総合スコア132

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/01/11 14:52

編集2017/01/14 10:29

Rails 5.0.0.1、ファイル upload:carrierwave、UIでDrag & Dropをできる仕様とするべく、dropzonejs(ruby-gem:dropzonejs-rails)を入れています。

以下の通り画像(ファイルアップロード)のみであれば問題なく動きますが、画像(ファイル)のみならず、model内のその他のカラム(例えば、stringのタイトル等)を加えると、入れると、viewで出したい画面が出なくなります。
サーバー側での問題ではなく、単純にclassの指定に問題があると思っていますが、直し方が分からず、誤りをご指摘頂けますと助かります。

###問題なく表示されるコード

html

1#erbファイル 2<%= form_for [:user, @product], url: :user_user_product, 3 html: {multipart: true, class: 'dropzone', id: 'my-dropzone'} do |f| %> 4 <div class = "fallback"> 5 <%= f.file_field :makeimg_three %> 6 <%= f.submit "編集する" %> 7 </div> 8 <% end %> 9 10#生成されるhtml 11<form class="dropzone" id="my-dropzone" enctype="multipart/form-data" action="/user/users/2/products/4" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="_method" value="patch" /><input type="hidden" name="authenticity_token" value="itPqv0HfK1eTIIJCca3ug8Zfpj9zd73BLkhjBExnHS42dU7fKwb3F9LFU+FaKcp61wbxhXAeRBiuRZcnkCUH9Q==" /> 12 <div class = "fallback"> 13 <input type="file" name="product[makeimg_three]" id="product_makeimg_three" /> 14 <input type="submit" name="commit" value="編集する" data-disable-with="編集する" /> 15 </div> 16</form>

###うまくいかないコード(単純にmodelのカラムを追加しただけです)
うまくいく方はform_forclass:'dropzone'を指定していますが、そのままだとおかしな表示になってしまう為、外に出しているのですが、当然かもしれませんが、機能しなくなります。

html

1#erbファイル 2<%= form_for [:user, @product], url: :user_user_product, 3 html: {multipart: true} do |f| %> 4 <div class="form-group row"> 5 <%= f.label :title, "コース", class: "col-form-label form-adj required", style:"font-size:1rem;" %> 6 <div class="form-adj-latter"> 7 <%= f.text_field :title, class:"form-control", type:"text", placeholder:"例:目元が映えるメイク" %> 8 </div> 9 </div> 10 <div class="dropzone", id:'my-dropzone'> 11 <div class = "fallback"> 12 <%= f.file_field :makeimg_three %> 13 <%= f.submit "編集する" %> 14 </div> 15</div> 16 <% end %> 17 18#生成されるhtmlファイル 19 <form class="edit_product" id="edit_product_4" enctype="multipart/form-data" action="/user/users/2/products/4" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="_method" value="patch" /><input type="hidden" name="authenticity_token" value="kw+KGD28O9Yt16m95DuUKxyLnHN01UDtZm9dbuYYpn4vqS54V2XnlmwyeB7Pv7DSDdLLyXe8uTTmYqlNOlq8pQ==" /> 20 <div class="form-group row"> 21 <label class="col-form-label form-adj required" style="font-size:1rem;" for="product_title">コース</label> 22 <div class="form-adj-latter"> 23 <input class="form-control" type="text" placeholder="例:目元が映えるメイク" value="ttファンデーションの基礎教えます" name="product[title]" id="product_title" /> 24 </div> 25 </div> 26 <div class="dropzone", id:'my-dropzone'> 27 <div class = "fallback"> 28 <input type="file" name="product[makeimg_three]" id="product_makeimg_three" /> 29 <input type="submit" name="commit" value="編集する" data-disable-with="編集する" /> 30 </div> 31</div> 32</form>

問題ない方の画面はこちら
イメージ説明

問題ある方の画面はこちら
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

formタグ以外に設定する方法が確り書かれていました。

http://www.dropzonejs.com/#create-dropzones-programmatically

http://webdelog.info/blog/2013/03/04/dropzonejs.html

投稿2017/01/15 01:58

innjera

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問