エラーの解決法と、それに関連して名前の付け方について教えていただきたいです。
エラーに至るまで
terminal
1$ rails new board 2$ rails g controller board 3$ rails g model Board string:name text:text 4 invoke active_record 5The name 'Board' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again. 6
と表示されたので(モデルにはアプリ名と同じ名前はつけられないと思い)
terminal
1$ rails g model Article string:name text:text
でモデルとテーブルを作りました。
その後、boards_controller.rbに以下の記述、
ruby
1class BoardsController < ApplicationController 2 . 3 . 4 def new 5 @article = Article.new 6 end 7end
new.html.erbに以下の記述を行いました。
erb
1. 2. 3<%= form_with model: @article do |f| %> 下のエラー文のline#8はここ 4 . 5 . 6<% end %>
すると、以下のようなエラー文が表示されました。
NoMethodError in Boards#new
Showing /Users/xxx/rails_projects/board/app/views/boards/new.html.erb where line #8 raised:
undefined method `articles_path' for #<#Class:0x00007fe1a0875238:0x00007fe1a08800e8>
Did you mean? asset_path
実際、Articleモデルに関してroutes.rbでは何も記述していません。
ruby
1Rails.application.routes.draw do 2 get 'boards' => 'boards#index' 3 get 'boards/new' => 'boards#new' 4end
質問
・今回の場合で、モデル名の変更をせずにうまく動くようにするためには、routesにどのような記述を追加すればよいのか。
・本当は、ArticleモデルではなくBoardモデルを使った方が統一感がある気がする(resourcesでモデルの方のパスまでまかなえる?)。
ということは、モデル名になりそうな名前をアプリにつけるのは避けた方がよいのか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/28 03:41
2018/12/28 07:23
2018/12/29 01:58