前提・実現したいこと
現在bootstrapを用いて簡単な自己紹介ができる機能を作ろうとしています。
今まではform_tagなどを用いてフォームを作っていたのですが、bootstrapは<form>と記載されています。
ここで私(初学者)が抱えている疑問は以下の点です。
<form>ははどのアクションを呼ぶのか
例えば下記の場合、コントローラーにあるアップデートアクションを呼ぶと思います。しかし<form>だけだとどうなるのか、また指定したアクションをbootstrapで呼びたい時どうすれば良いのか。
<%=form_tag("/users/#{@user.id}/update",{multipart: true}) do%>
def update @user = User.find_by(id: params[:id]) @user.name = params[:name] @user.intro = params[:intro] if params[:image] @user.image_name = "#{@user.id}.jpg" image = params[:image] File.binwrite("public/user_images/#{@user.image_name}", image.read) end
formだけ↓
<form> <div class="form-row"> <% @users.each do |user| %> <div class="form-group col-md-6"> <label for="inputEmail4">Name</label> <input type="name" class="form-control" id="inputEmail4" placeholder="Name" value="<%=user.name %>"> </div> <div class="form-group col-md-6"> <label for="inputEmail4">Email</label> <input type="email" class="form-control" id="inputEmail4" placeholder="Email" value="<%=user.email %>"> </div> <div class="form-group col-md-6"> <label for="inputPassword4">Password</label> <input type="password" class="form-control" id="inputPassword4" placeholder="Password" > </div> </div> <div class="form-group"> <label for="inputAddress">Photo</label> <input type="file" class="form-control" id="inputAddress" placeholder="1234 Main St" value="<%=user.image %>"> </div> <button type="submit" class="btn btn-primary">Sign in</button> </form> <% end %>
補足情報(FW/ツールのバージョンなど)
scaffoldとgem'devise'を使っています。
routes
1Rails.application.routes.draw do 2 devise_for :users 3 resources :pages 4 root "pages#index" 5 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 6 get "/intro" => "pages#intro" 7end
1回クライアントサイドであるBootStrapとサーバーサイドであるRubyは切り離して考えた方が良いように思います。あくまでBootStrapはレイアウトだけのものですし、フォーム送信や画像投稿云々は全く影響がない範囲です。
複数問題が発生しているのでしたら一度で全て解決しようとせず1つずつ対応された方が良いと思いますよ。
優先度や重要度は決めてもらう必要がありますが、1つの質問で方向性の違う問題を全て解決しようというのは余計に混乱する元となります。
ので、1つに絞ってください。
承知しました!アドバイスありがとうございます。訂正しますので、もしよろしければ訂正後再度確認いただけると幸いです。
あぁBootstrapは外したんですね。ならタイトルも変更しておいてください。
Rubyがわかるわけじゃないのでこちらに書きますが、formはあくまでhtmlの仕組みなので何も呼び出しません。
action属性に指定された先にform内の情報を送信はしますが受け側はサーバーサイドの仕事です。
formのaction属性が未指定の場合は自身(のURL)に対して送信します。
タイトル変更します!bootstrapは他の質問に記載しました!やはりbootstrapに与えられたformだけではDBとはやり取りできませんよね。一応その認識でいたため form_with などでモデルを指定したるしたのですがいまいちうまくいかなくて
ん?だからBootstrapは何も関係ありません。単なるレイアウトです。
だから別に何に与えられる関係なくformはformの仕事をします。
submitされればactionに指定されたURLにフォーム内容を送信するだけです。
DB云々は送信された情報を受け取るサーバーサイドの出来事なのでこれも別問題です。
「リクエストとレスポンス」の基本概念を学ばれたほうが混乱しないと思います。
bootstrapがサーバーサイドに影響しないこと、つまりbootstrapはただのレイアウトであることはわかっているのですが、質問の書き方が下手でわかりづらくて申し訳ございません。確かにこの質問はいくつかの質問が混在しておりわかりづらいですね。ご指摘していただいて整理することができました。また訂正いたしますので、ご確認いただけると幸いです!
あなたの回答
tips
プレビュー