Ruby on Railsチュートリアルを勉強してます。
7章の演習において「考えましょう」のまま答えがないものがあり悩んでます。
未送信のユーザー登録フォーム (図 7.12) のURLと、送信済みのユーザー登録フォーム (図 7.18) のURLを比べてみましょう。なぜURLは違っているのでしょうか? 考えてみてください。
要は、ユーザー登録フォームのURLが、送信前と送信後で変わるのですが、
その明確な理由が分かりません。
送信の流れを整理してみましたが、やはり最後のURLが何故/usersになるのか分かりません・・・
ルーティングに従い、usersコントローラーのcreateアクションへ。
@user.saveで失敗するのでrender 'new'が実行される。
でもURLは何故/users??
post と 'users#new'の組み合わせが無いから?
ルーティング
ruby
1Rails.application.routes.draw 2 get '/signup', to: 'users#new' 3 post '/signup', to: 'users#create' 4 resources :users 5end
コントローラ
ruby
1class UsersController < LoginController 2 def new 3 @user = User.new 4 end 5 6 def create 7 @user = User.new(user_params) 8 if @user.save 9 @user.send_activation_email 10 flash[:success] = "メールを確認して、アカウントを有効にしてください。" 11 redirect_to root_url 12 else 13 render 'new' 14 end 15 end 16 17 def edit 18 @user = User.find(params[:id]) 19 end 20 21 def update 22 @user = User.find(params[:id]) 23 if @user.update_attributes(user_params) 24 flash[:success] = "更新しました" 25 redirect_to @user 26 else 27 render 'edit' 28 end 29 end 30 31 def index 32 @users = User.paginate(page: params[:page]) 33 end 34 35 private 36 37 def user_params 38 params.require(:user).permit(:name, :email, :password, :password_confirmation) 39 end 40 41 42end 43
ビュー
ruby
1 2 <%= form_for(@user) do |f| %> 3 <%= render 'shared/error_messages' %> 4 <%= f.label :name %> 5 <%= f.text_field :name, class: 'form-control' %> 6 7 <%= f.label :email %> 8 <%= f.email_field :email, class: 'form-control' %> 9 10 <%= f.label :password %> 11 <%= f.password_field :password, class: 'form-control' %> 12 13 <%= f.label :password_confirmation %> 14 <%= f.password_field :password_confirmation, class: 'form-control' %> 15 16 <%= f.submit yield(:button_text), class: "btn btn-primary", id: "commit" %> 17 <% end %> 18 19
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/20 02:59
2020/05/20 03:12
2020/05/20 03:33
2020/05/20 03:34
2020/05/20 03:38