現在rails3.2でrailsの勉強をしています。この過程で困ったことがありましたので質問させていただきました。
それはviewにfomr_forを定義するとエラーをはいて動かないのです。
具体的にソースで説明します。
・コントロールのソース
class ComicListController < ApplicationController
def index
@comic_master_r = ComicMaster.new
end
end
・Viewのソース
<%= form_for @comic_master_r do |f| %>
<% end %>
・エラーの内容
undefined method `comic_masters_path' for #<#<Class:0x9da00d0>:0x9e73d04>
私個人の見解としては、form_forを使う際に必要とされるコントロール側の変数の定義が足りないからではないかと思っているのですが、googleの検索結果ではViewしか書いていないことが多く、コントロールにどんなものを定義すればいいのか、うまく判断がつきません。
ご回答お待ちしております。
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
の様な感じの行が表示されれば設定がうまく行った証拠です
お返事ありがとうございます。おかげさまで上記のルーティングを追加すれば動くようになりました。
ただ疑問が少し残ります。もしよろしければ本題からは少しずれますが、お答えいただけると幸いです。
<<undefined method `comic_masters_path'
<<とありますので、ルーティングのためのURLの生成に失敗しているようですね
なぜこのエラーでルーティングに失敗していると分かったのですか?自分は色々ぐぐってもこの答えにたどり着けませんでした。
<<comic_masters GET /comic_masters(.:format) comic_masters#index
<<の様な感じの行が表示されれば設定がうまく行った証拠です
submitを押した後に遷移先のURLとコントローラを結びつける過程でエラーになるのならわかるのですが、なぜform_forをViewに定義するだけでルーティングが必要となるのですか?
以上です。よろしければもう少しだけお付き合いください。
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」で検索するとわかると思います
お返事ありがとうございます。
railsはで裏側で色々やってくれているのですね。やはりこのあたりはちゃんと理解していこうとおもいます。
またRESTに関しては概念レベルで知らなかったのでとても勉強になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- その他(プログラミング・Web制作) pythonのDjangoでHTML内で変数を利用したいです 3 2022/05/15 15:33
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三項でたとえば交換って
-
教えてください
-
再起動後必ず2つのエラーが出...
-
ビーリアルのユーザー名を変え...
-
C言語の入力した文字を反転させ...
-
パソコンのスクリーンセーバー...
-
pythonエラー
-
英数字を含む文字列(0-9,A-Z)...
-
100万件越えCSVから条件を満た...
-
VBA メモ帳の上書き保存がしたい
-
文字コードのエラー
-
WinSCPで画像のように puttyを...
-
VBScriptでExcel(2019)上のデー...
-
Accessで文字列のバイト数読み込み
-
【メモリ不足で落ちる(python)】
-
パイソンエラーについて
-
符号付整数の演算結果を答えよ ...
-
pandasでsqlite3にテーブル作成...
-
IDLE.Shell 3.10.0
-
(再質問)エクセルのマクロボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パイソンのクラス
-
No route matches [GET] "/post...
-
Rubyについて質問です
-
クラス名やモジュール名の競合...
-
HSTLやSSTL等のI/Oピン
-
What class are you in? には何...
-
テンプレートの特殊化でコンパ...
-
railsのlink_toに動的なclass指定
-
変数の隠蔽とは?
-
redirect先でredirect元の変数...
-
2つのクラスがお互いのポイン...
-
class roomとclassroom どちら...
-
特定のactionでのみvalidation
-
インスタンス内から自分のクラ...
-
Rails3 taskでDBのデータを参照...
-
構造体を使ったプログラム
-
下線部の答え教えてください こ...
-
【ruby】特異クラスを使って,Fi...
-
get() と find() の違いについて
-
「arg」は何の略?
おすすめ情報