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

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

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

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

解決済

1回答

628閲覧

form_withのmodel:指定でエラーの出る原因について教えてください

Masahiro85

総合スコア2

Ruby

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2020/11/02 06:34

前提・実現したいこと

仮説と結果の投稿を行うアプリを作成中です。
テーマ対して複数仮説を登録しますが、仮説登録の画面の表示と保存でエラーが出ます。

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

undefined method `guesses_path' for #<#<Class:0x00007fafc957c1c0>:0x00007fafc3c6d958>

該当のソースコード

ruby

1<%= form_with model: @guess, local: true do |f| %> 2 <%= f.text_area :story %> 3 <%= f.submit "保存" %> 4<% end %>
  • モデル名 Guess
  • コントローラ Guesses

ruby

1 def index 2 @guesses = Guess.all 3 end 4 5 def new 6 @guess = Guess.new 7 end 8 9 def create 10 @guess = Guess.create(guess_params) 11 end
  • ルーティング

ruby

1 resources :moyattos, only:[:new,:create,:show,:edit,:update,:destroy] do 2 resources :guesses, only:[:new,:create] 3 end

試したこと

  • 試した書き方 modeを @guess→@guessesに変更をおこなった。

new画面は表示されるものの、submitが機能せず、createコントローラが動かない。

ruby

1<%= form_with model: @guesses, local: true do |f| %> 2 <%= f.text_area :story %> 3 <%= f.submit "保存" %> 4<% end %>

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

maisumakun

2020/11/02 06:41

guessに対応するmoyattoは取得していますか?
Masahiro85

2020/11/02 07:13 編集

どうもありがとうございます! 以下の記述をすることで解決いたしました。 ```ruby def new @moyatto = Moyatto.find(params[:moyatto_id]) @guess = Guess.new end ``` ``` <%= form_with(model:[@moyatto,@guess], local: true ) do |f| %> ```
guest

回答1

0

自己解決

アドバイスをいただいたguessに対応するmoyattoは取得することで解決いたしました。

ruby

1def new 2@moyatto = Moyatto.find(params[:moyatto_id]) 3@guess = Guess.new 4end
<%= form_with(model:[@moyatto,@guess], local: true ) do |f| %>

投稿2020/11/02 07:15

Masahiro85

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問