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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

940閲覧

codepen実装時のフォーム作成に関して

tomomomo

総合スコア22

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/09/27 01:50

状況

現在ポートフォリオを作成しており、新規登録画面をdeviseを用いて実装してあります。
レイアウトを整えるためにcodepenからHTML,CSSを引っ張ってきて実装を考えていました。
deviseではform_foを使用しており、codepenではinputタグを使用している状況です。
deviseでの機能とcodepenでのレイアウトを両立するためにはどうすれば良いのでしょうか。

該当のコード

DeviseRegistrations

1//new.html.erb 2<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 3 <%= render "devise/shared/error_messages", resource: resource %> 4 5 <div class="field"> 6 <%= f.label :name %><br /> 7 <%= f.text_field :name, autofocus: true %> 8 </div> 9 10 <div class="field"> 11 <%= f.label :email %><br /> 12 <%= f.email_field :email, autofocus: true, autocomplete: "email" %> 13 </div> 14 15 <div class="field"> 16 <%= f.label :password %> 17 <% if @minimum_password_length %> 18 <em>(<%= @minimum_password_length %> characters minimum)</em> 19 <% end %><br /> 20 <%= f.password_field :password, autocomplete: "new-password" %> 21 </div> 22 23 <div class="field"> 24 <%= f.label :password_confirmation %><br /> 25 <%= f.password_field :password_confirmation, autocomplete: "new-password" %> 26 </div> 27 28 <div class="actions"> 29 <%= f.submit "Sign up" %> 30 </div> 31<% end %> 32 33<%= render "devise/shared/links" %>

codepenHTML

1<div class="main-w3layouts wrapper"> 2 <h1>Creative SignUp Form</h1> 3 <div class="main-agileinfo"> 4 <div class="agileits-top"> 5 <input class="text" type="text" name="Username" placeholder="Username" required=""> 6 <input class="text email" type="email" name="email" placeholder="Email" required=""> 7 <input class="text" type="password" name="password" placeholder="Password" required=""> 8 <input class="text w3lpass" type="password" name="password" placeholder="Confirm Password" required=""> 9 <div class="wthree-text"> 10 <label class="anim"> 11 <input type="checkbox" class="checkbox" required=""> 12 <span>I Agree To The Terms & Conditions</span> 13 </label> 14 <div class="clear"> </div> 15 </div> 16 <input type="submit" value="SIGNUP"> 17 </form> 18 <p>Don't have an Account? <a href="#"> Login Now!</a></p> 19 </div> 20 </div> 21 <!-- copyright --> 22 <div class="colorlibcopy-agile"> 23 <p>© 2018 Colorlib Signup Form. All rights reserved | Design by <a href="https://colorlib.com/" target="_blank">Colorlib</a></p> 24 </div> 25 <!-- //copyright --> 26 <ul class="colorlib-bubbles"> 27 <li></li> 28 <li></li> 29 <li></li> 30 <li></li> 31 <li></li> 32 <li></li> 33 <li></li> 34 <li></li> 35 <li></li> 36 <li></li> 37 </ul> 38 </div>

解決例

inputタグをf.に変換などできるのでしょうか。
今回はCSSの記述量がかなり多いため割愛させていただきます。
(代わりにcodepenのURLを下記に貼り付けさせていただきます)
参照させていただいたcodepenのURL

至らない点等あると思いますが、他に必要事項があれば随時コメントいただけると幸いです。
どうか、お力添えよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

結局はhtmlに変換されるのでerbであればそのままでも使えないわけではないです。
cssも外部ファイルにしてますよね?

Railsの機能が必要な箇所のみ書き換えてください。

投稿2021/09/27 04:27

m.ts10806

総合スコア80875

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

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

tomomomo

2021/09/27 06:32

回答いただきありがとうございます。 cssに関しては新しくファイルを作っております。 そのままでも使えるというのは、form_forを使う必要がないということですか? createなどはdeviseのコントローラなどが関係していると思ったのですが、元からあるinputタグでDBに保存まで完結できるということでしょうか?
m.ts10806

2021/09/27 06:44

回答にも書いたようにerbでform_forつかっても、ブラウザ表示時にはformタグに変換されるので同じことになるという話をしています。 もちろん、モデルやオブジェクトと紐づけたいなら同じ出力内容になるように組み替える必要はあります。
tomomomo

2021/09/27 06:44

ユーザ名を登録する場合には <input class="text" type="text" name="Username" placeholder="Username" required=""> がcodepenでは記述されています。 deviseの場合はform_forの中に <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name, autofocus: true %> </div> と記述されています。 codepenではクラスがかなり細かく設定されていると思うのですが、CSSを反映させながらフォームを記述するにはどうしたら良いかわからなくて。。。すみません。
tomomomo

2021/09/27 06:46

回答ありがとうございます。 codepenの方ではモデルの紐付けができていないから今あるテーブルのカラム名を保存することができない状態になっているということですかね。
m.ts10806

2021/09/27 07:07

name属性の属性値がリクエストの際の名となるので、あわせれば良いと思います。 クラスはあくまでclassなので、fでもきちんと設定すれば同じようになるはずです。 https://railsdoc.com/page/text_field 「HTML属性」として:classが使えますね。
tomomomo

2021/09/27 07:13

<%= f.text_field :name, autofocus: true, :class => 'input', :placeholder => 'Username' %><br/> のようにクラス名をつけることができました。 見た目としては元と同じようにできたのですが、カーソルをフォームに置いたときやクリックした際の微妙な動きが反映されていないみたいでした。 input[type="text"], input[type="email"], input[type="password"] { font-size: 0.9em; color: #fff; font-weight: 100; width: 94.5%; display: block; border: none; padding: 0.8em; border: solid 1px rgba(255, 255, 255, 0.37); -webkit-transition: all 0.3s cubic-bezier(0.64, 0.09, 0.08, 1); transition: all 0.3s cubic-bezier(0.64, 0.09, 0.08, 1); background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 96%, #fff 4%); background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 96%, #fff 4%); background-position: -800px 0; background-size: 100%; background-repeat: no-repeat; color: #fff; font-family: 'Roboto', sans-serif; } おそらくこの部分でのtransitionなどが反映されていないのですが、classにinputを追加するだけでは反映されないのでしょうか? 何度もすみません。
m.ts10806

2021/09/27 08:42

属性値はあくまで文字列なので同じように列挙すればいいだけと思います。 ただ、レイアウトの話だとrails関係ないのでご注意を。 f使ってブラウザに表示させたときの「ソースを表示」で想定のhtmlになっているかを確認してください。
tomomomo

2021/09/28 01:36

かしこまりました。 大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問