🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

806閲覧

フォームの送信がされません。

haru24s

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/05 09:12

編集2021/02/05 09:27

ユーザー登録機能を作ろうとして、新規登録フォームのページを作ったのですが機能しません。
ルーティングはresourcesで、コントローラーとビューは自分で書いたのですが、どこが間違っているのでしょうか...?

new.html.erb <div class="main user-new"> <h1>新規登録</h1> <div class="form"> <div class="form-body"> <% @user.errors.full_messages.each do |message| %> <div class="form-error"> <%= message %> </div> <%end%> <%= form_with model: @user do |form| %> <div class="field"> <%= form.label :ユーザー名 %> <%= form.text_field :name, placeholder: "ユーザー名" %> </div> <div class="field"> <%= form.label :メールアドレス %> <%= form.text_field :email, placeholder: "メールアドレス" %> </div> <div class="actions"> <%= form.submit "登録" %> </div> <% end %> </div> </div> </div>
users_controller.rb def new @user = User.new end def create @user = User.new(name: params[:name], email: params[:email]) if @user.save flash[:notice]="ユーザー登録が完了しました" redirect_to("/users/#{@user.id}") else render("users/new") end end

ちなみにこのコードの状態でsubmitボタンを押すと、ターミナルに

Started POST "/users" for ::1 at 2021-02-05 18:11:41 +0900
Processing by UsersController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Qg46xiGSdIw8mWnspv9ka3k4y4Uc9t0fc4qg8jUzXjDzKFmqMU87EK1+D+iX7UhQCz5gn2V6BeCro0Kk6JWKcA==", "user"=>{"name"=>"テスト", "email"=>"test@test.com"}, "commit"=>"登録"}
(0.1ms) begin transaction
↳ app/controllers/users_controller.rb:17
User Exists (0.7ms) SELECT 1 AS one FROM "users" WHERE "users"."email" IS NULL LIMIT ? [["LIMIT", 1]]
↳ app/controllers/users_controller.rb:17
(0.1ms) rollback transaction
↳ app/controllers/users_controller.rb:17
Rendering users/new.html.erb within layouts/application
Rendered users/new.html.erb within layouts/application (2.4ms)
Completed 200 OK in 41ms (Views: 33.2ms | ActiveRecord: 0.8ms)

と表示されます。

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

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

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

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

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

m.ts10806

2021/02/05 09:18

>と表示されます。 どこにですか?あと、「書いた」だけで伝わるものは何もないのでコードを提示してください
haru24s

2021/02/05 09:28

サーバー起動中のターミナルです。載せている部分のコードでは情報が足りないということでしょうか?
guest

回答1

0

ベストアンサー

logのParamaterをよくみてください。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "user"=>{"name"=>"テスト", "email"=>"test@test.com"}, "commit"=>"登録"}
になっています。
def create の @user = User.new での paramsの参照方法を間違えています。

投稿2021/02/05 10:42

winterboum

総合スコア23567

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

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

haru24s

2021/02/05 11:09

ご回答いただいてありがとうございます! ご指摘いただいた、createアクションのparams部分に注目してもう一度調べ、 コントローラーにて、privateで def user_params params.require(:user).permit(:name, :email) end と書いて、User.newにuser_paramsを渡したところうまく行きました。(正しい対処か不安ですが) ストロングパラメータ関連についてもっと勉強したいと思います。ありがとうございました!
winterboum

2021/02/05 11:38

それがrailsの標準形です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問