• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:railsのform_forの使い方)

railsのform_forの使い方

このQ&Aのポイント
  • railsのform_forを使ってviewのフォームを定義する際にエラーが発生する問題について
  • form_forを使う際には、必要とされるコントロール側の変数の定義が足りない可能性がある
  • コントロールにどのような変数を定義すれば良いかについての情報がgoogleの検索結果では不足している

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

undefined method `comic_masters_path' とありますので、ルーティングのためのURLの生成に失敗しているようですね 推測ですがconfig/routes.rbにコントローラーの情報の登録を忘れていないでしょうか? routes.rbを開いて以下の行を追加してみてください resources(:comic_masters) その後に,unix環境なら rake routes | grep comic と入力して comic_masters GET /comic_masters(.:format) comic_masters#index の様な感じの行が表示されれば設定がうまく行った証拠です

lain_003
質問者

お礼

お返事ありがとうございます。おかげさまで上記のルーティングを追加すれば動くようになりました。 ただ疑問が少し残ります。もしよろしければ本題からは少しずれますが、お答えいただけると幸いです。 <<undefined method `comic_masters_path' <<とありますので、ルーティングのためのURLの生成に失敗しているようですね なぜこのエラーでルーティングに失敗していると分かったのですか?自分は色々ぐぐってもこの答えにたどり着けませんでした。 <<comic_masters GET /comic_masters(.:format) comic_masters#index <<の様な感じの行が表示されれば設定がうまく行った証拠です submitを押した後に遷移先のURLとコントローラを結びつける過程でエラーになるのならわかるのですが、なぜform_forをViewに定義するだけでルーティングが必要となるのですか? 以上です。よろしければもう少しだけお付き合いください。

その他の回答 (1)

回答No.2

何故分かったのかは簡単で、私も以前似た問題に出会ったからです 実際には、form_forの使い方で調べていくとわかりやすいと思います 例をとってみると、以下の2つの書式は、ほぼ同じ意味です 例1 <%=form_for :comic_masters, url: comic_masters_path, :method => "POST" do |f| %> <% end %> 例2 <%=form_for :comic_masters, url: url_for( :controller => :comic_masters, :action => :create ) do |f| %> <% end %> フォームの値の取り方や、ボタンを押した時に何処のアクションにジャンプするかは はrailsの規約にのっかれば決まりきっているので、裏側で自動変換してくれているのですね なんでcomic_masters_pathでPOSTすると、createアクションに行くのか comic_masters_pathって何なのかは 「rails restful」で検索するとわかると思います

lain_003
質問者

お礼

お返事ありがとうございます。 railsはで裏側で色々やってくれているのですね。やはりこのあたりはちゃんと理解していこうとおもいます。 またRESTに関しては概念レベルで知らなかったのでとても勉強になりました。ありがとうございました。

関連するQ&A

専門家に質問してみよう