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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

1回答

1573閲覧

Railsでform_withを用いて、複数のモデルを指定して値を保存する

daddy123

総合スコア1

Ruby

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

Ruby on Rails 6

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

0グッド

1クリップ

投稿2020/10/27 02:21

編集2020/10/27 02:25

前提・実現したいこと

ルーティングネストを用いて、詳細ページに遷移した状態でその詳細ページに紐づいたコメントを投稿する機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

error

1Routing Error 2No route matches [POST] "/prototypes/5"

該当のソースコード

ruby

1#ルーティングのネスト 2resources :prototypes do 3 resources :comments, only: :create 4end

ruby

1#コントローラーでの処理 2def create 3 if @comment = Comment.create(comment_params) 4 @prototype = Prototype.find(params[:id]) 5 @comment = Comment.new 6 redirect_to :show 7 else 8 render :show 9 end 10end 11private 12def comment_params 13 params.require(:comment).permit(:text).merge(user_id: current_user.id, protorype_id: params[:protorype_id]) 14end

html

1<!--遷移したページに紐づいたコメントの入力フォーム--> 2<%= form_with(mocdl: [@prototype, @comment], local: true) do |f|%> 3 <div class="field"> 4 <%= f.label :text, "コメント" %><br /> 5 <%= f.text_field :text %> 6 </div> 7 <div class="actions"> 8 <%= f.submit "送信する", class: :form__btn %> 9 </div> 10<% end %>

試したこと

本来、送られるはずのURLパターンが
/prototypes/:prototype_id/comments(.:format)
であるのを確認し、自分の記述したform_withで送られているURLパターンが
/prototypes/5
なので原因がform_withである可能性が高いのはわかるのですが、構文も間違っていない様に感じます。
またサーバーの再起動なども試しましたが解決しませんでした。

補足情報(FW/ツールのバージョンなど)

ruby on rails v6.0.0

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

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

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

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

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

maisumakun

2020/10/27 02:30

途中で「mocdl:」となっていますが、これは転記の際のミスでしょうか、それとも実際のコードにもそう書いていますでしょうか?
daddy123

2020/10/27 02:36

該当箇所を修正しましたら、ルーティングのエラーに関して解決しました。 該当箇所は、見本となる記述をそのままコピーしたため間違っているはずがないと思い込んでいました。 ありがとうございました。
guest

回答1

0

自己解決

#修正前

ruby

1<%= form_with(mocdl: [@prototype, @comment], local: true) do |f|%>

#修正後

ruby

1<%= form_with(model: [@prototype, @comment], local: true) do |f|%>

#修正内容
modelをmocdlと間違えて記述していた

投稿2020/10/27 02:39

daddy123

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問