railsのsubmit時に出たエラーについての忘備録です。
エラー内容
コード:f.submitでレコードを追加、変更する。このコードはレコード追加時のものを使用しています。
new.html.erb
<%= form_for(@article) do |f| %>
<%= f.submit "送信"%>
<% end %>
ルーティングに登録ヨ。とエラーが出る。
form_for(@~~)を使えば、自動でルーティングが割り当てられるんじゃなかったけ?と思い、色々調べたんですが、なかなか解決しませんでした。。
解決方法
解決策自体はここに記述されています。
ルーティングエラーなので、form_forにコントローラとアクション名を指定すれば、urlをうまく引き渡すことができます。
下記のコードでうまくいきます。
<%= form_for(@article, url: {controller: 'article', action: 'create'}) do |f| %>
エラーの原因
form_for(@~~)のルーティングの自動生成はされないのかい??
urlの指定方法が良くなくて、自動生成されないみたいです。下記の記事とチュートリアルを参考にしてください。
単数形のurlの指定方法だと、form_for(@~~)でルーティングが自動生成されないようです。
例えば、urlの指定方法が
article/create
だと、ルーティングの自動生成が行われなくて、
articles/create
だと自動生成が行われるみたいです。
なので、コントローラを作成する際は、複数系にしたほうが無難です。