以下のようにshowアクションとcreateアクションが定義、ルーティングされてあるとして
#routes.rb resources :relations, :only => [:show, :create]
<%= button_to "連絡&交渉をする", relation_path(model) %>
ボタンを押したらshowアクションに飛ばせるようにしたいとします。
modelには飛びたいmodelやidが格納されています。
しかしボタンを押すと
No route matches [POST] "/relations/12"
というエラーが出ています。
ルーティングを見ると(rails/info/routes)showアクションは
relation_path GET /relations/:id(.:format)
と書いてありパス記法に問題があるようには見えません。
ただしこのbutton_toヘルパーのオプション引数に
<%= button_to "連絡&交渉をする", method: :get, relation_path(model) %>
とget動詞を指定するとshowアクションに飛んでくれます。
しかし、この動詞を記載した状態でボタンを押すとhttp://localhost:3000/relations/12?
とurlパラメーターを受け取るようなクエスチョンマークがついております。
問題はなさそうに見えますが気持ち悪さを感じます。
上記を踏まえて質問なのですが、
①どうしたらpath記法を使いhttp://localhost:3000/relations/12
といったクエスチョンマークが付かないようなアクションに飛んでくれるか
②なぜshowアクションを指定する記法なのにNo route matches [POST] "/relations/12"とPOST動詞を叩いているのか
というのを知りたいです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。