0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

createアクションが動かない!【Ruby on rails】

Posted at

はじめに

Ruby on Rails チュートリアル(以下:レイチュー)をなんとか2周し終え、意気揚々とオリジナルサイトを作り始めましたが、序盤も序盤createアクションを押しても、ページに何も変化がないという状況になりました。

qiitaに投稿したことがなかったので投稿の仕方を確認する意味合いも込めて解決までの道のりを記していく。

環境
Rails6.0.3, macOS Catalina 10.15.7

何が起きた?

ユーザー登録機能を実装しようとform_withで雛形を作りいざ登録ボタンを押しても画面に何も変化が起きませんでした。

new.html.erb
<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_with model: @user, url: sign_in_path, do |f| %>
      <%= f.label :name %>
      <%= f.text_field :name %>

      <%= f.label :email %>
      <%= f.email_field :email %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation %>

      <%= f.submit "Create my account", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

コントローラルートなどを確認したが問題はなさそう。(いつものやつ)

users.controller.rb
class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      # 保存の成功をここで扱う。
      redirect_to @user
    else
      render 'new'
    end
  end
  
  def show
    @user = User.find(params[:id])
  end
  
  private
  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confimation)
  end
end

何があかんのや。。。

解決

そもそも登録ボタンを押した時にエラーすら出ず、ページにも変化がない為form_withに何か問題があるのではと仮定。
レイチューの登録の章を見ると 「local: true 」がform_withの中に入っていることを確認。
これを入れるとうまく反応するようになりました。

学び local: trueはなぜ入れるのか

結論から言うとform_withではデフォルトでAjax通信をしているので非同期通信になるとのこと。
この状態だと必要な箇所だけが更新されて、そうでないところはそのままの状態になってしまう。
ここにlocal: trueと引数を渡す事によって、通常のHTTPリクエストになり、ページ全体が返ってきてページがリロードされるのでうまく動いたと言うことです。

最後に

レイチューをやっているだけでは躓かなかった箇所で躓いたのでやはり自分で作ってみると言うのは大事だと身をもって実感した。
qiitaの投稿は書いていく内に自分の考えを整理でき、何が分かっていないのかを浮き彫りにすることができるので、自分の勉強のためにも非常に良い。
人の役に立つような発信ができるよう精進していく。

参考

@kakudaisuke https://qiita.com/kakudaisuke/items/e032c7705db00e8081dc?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items

記事の書き方なども含めて参考にさせていただきました。
引用する時本人の許可いるのかしら?
qiitaの使い方も勉強します。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?