お世話になります。
現在、Railsを使ったアプリを製作中で、一般的なUsersの機能を実装しています。
Users#createにて、以下のような問題が発生しました。
new.html.erb
にて新規登録画面を作り、入力された会員データをusers#createに送ります。
new.html.erb
<h2 class="text-center">新規登録</h2> <%= form_tag('/users/create') do %> <%= label_tag :名前 %> <%= text_field_tag :name,'',class: 'form-control' %> <%= label_tag :メールアドレス %> <%= text_area_tag :email, '',class: 'form-control' %> <%= label_tag :場所 %> <%= text_field_tag :location, '',class: 'form-control' %> <%= label_tag :コメント %> <%= text_area_tag :greet, '',class: 'form-control' %> <%= label_tag :パスワード %> <%= text_area_tag :password, '',class: 'form-control' %> <%= label_tag :画像 %> <%= file_field_tag :picture,class: 'form-control' %> <%= submit_tag :保存, class: 'btn btn-warning mt-3' %> <% end %>
そして、users#createは以下のようなコードです。
users_controller
def create @user = User.new(name: params[:name], email: params[:email],location: params[:location],greet: params[:greet],picture: params[:picture],password_digest: params[:password_digest]) @user.save redirect_to("/users/show/#{@user.id}") end
ルーティングは以下のようになっているので、自分としては新規登録画面に入力したデータは/users/show/ユーザーのid
に転送されるつもりだったのですが、
routes.rb
get '/users/show/:id' => 'users#show' get '/users/signup' => 'users#new' post '/users/create' => 'users#create'
以下のようなエラーが出てしまいます。
No route matches [GET] "/users/show"
ちなみに、エラー画面のURLを見るとhttp://localhost:3000/users/show/
となっており、確かにid
が取得されていない状況です。
まとめると、
①なぜusers_controllerのcreateアクションから/users/show/#{@user.id}
ではなく/users/show/
にリダイレクトされてしまうのか
②#{@user.id}
という書き方がまずいのであれば、どのように修正可能か
という2点をご教授いただきたいです。不足している情報があればご指摘ください。
ご回答いただけましたら幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/10 01:06
2019/06/10 01:15 編集
2019/06/10 02:10