質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Ruby on Rails

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

Q&A

解決済

1回答

1002閲覧

【Ruby on Rails6】 createメゾットがうまく機能しない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Ruby on Rails

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

0グッド

0クリップ

投稿2021/09/02 10:34

解決したいこと

POST送信がなされrootにrenderされるようにしたい

発生している問題

list/newでデータをcreateするが、urlがhttp://127.0.0.1:3000/list/createで固まってしまい、rootに遷移されない。またリロードすると当然routeにget 'list/create'を設定していないためエラーになる。

ruby

1#route.rb 2Rails.application.routes.draw do 3 root 'top#index' 4 get '/' => 'top#index' 5 get 'list/new' => 'list#new' 6 post 'list/create' => 'list#create' 7 devise_for :users 8end 9

ruby

1#new.html.erb 2<div class="listnewPage"> 3 <div class="container"> 4 <%= form_with model:@list, url:{controller: 'list', action: 'create'}, class:'new_list', local: true do |f| %> 5 <% if @list.errors.any?%> 6 <p class='タイトルは1~255文字以内で入力してください'></p> 7 <% end %> 8 <%= f.label :title %> 9 <%= f.text_field :title, autofocus: true, class: 'form-control listName', placeholder: 'リスト名' %> 10 <div class="text-center"><%= f.submit '作成', class:'submitBtn' %></div> 11 <% end %> 12 </div> 13</div>

ruby

1#list.controller.rb 2class ListController < ApplicationController 3 def new 4 @list = List.new 5 end 6 7 def create 8 @list = List.new list_params 9 if @list.save 10 redirect_to :root 11 else 12 render action: :new 13 end 14 end 15 16 private 17 def list_params 18 params.require(:list).permit(:title).merge(user_id: current_user) 19 end 20end

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

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

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

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

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

MasaSakano

2021/09/02 11:48

`save` に失敗しているのではないでしょうか? そうすると、そもそも `redirect_to` が実行されず、`render`の方が実行されることになります。パスは、`list/create`。想像ですが、`user_id` を含めてsaveしようとしているところで何か問題が出ているのかも知れません。 `@list.save!` に置き換えたり、logger に出力して検証してみてはどうでしょう?
guest

回答1

0

ベストアンサー

form_with model:@list, url: と model と url を両方指定しているので、Paramater が list_params が期待している形になっていない可能性が高いです。
url の方を削除してみて下さい。
それで routes 関連で文句が出たら、 routes.rb を resources をつかうRails標準の方法に直してください。

投稿2021/09/02 23:02

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問