質問: Article.new end ``` としているのですが、newアクションである登録フォームに行く前に下記のエラーが発生してしまいます。 サインインはログインでもあるのでm_showアクションまで実行されているということなんでしょうか.. イメージ的には サインアップ→フォームにて記事作成→user_idリンク完了 ログイン→user_id記事を表示 なのですが、こういった場合の解決方法はありますか? どなたかご教示していただけますと助かります。 -以下追記前- articlesというプロフィールページをユーザーが登録していくようなサイトを作っています。 新しいユーザーとしてサインアップしたところ以下のようなエラーが出てしまいました。 ActionController::UrlGenerationError in Articles#m_show Showing /vagrant/shinya/app/views/articles/m_show.html.erb where line #2 raised: No route matches {:action=>"edit", :controller=>"articles", :id=>nil} missing required keys: [:id] 現在は通常のCRUDシステムの他にマイページとしてshowを増設してm_showとし、そこで記事の更新や削除をできるようにしています。 articleのカラムにuser_idを付け、サインアップ時に付けられるuser_idと紐付ける形にしたいのですが、 すでにuser_id付きのプロフィール記事をログイン時にマイページ的に表示する作業が完了したところで今度はサインアップでエラーが出てしまったというところです。 エラーのParamus欄にはuser_idが表示されています。 少し前までは記事が作れていたので色々見なおしてみたのですが原因がわかりません。 どなたかご教授いただけないでしょうか。 よろしくおねがいします
回答: コードを書く時はバッククォートを3つで囲むか、コード部を選択して書き込み欄の上の > みたいなボタンを押してコードを見やすくしてください。 エラーの No route matches {:action=>"edit", :controller=>"articles", :id=>nil} missing required keys: [:id] ですが、articles#editはidが必要なのに無いからエラーとなっています。 m_show.html.erbで`edit_article_path(@article)`の様な記述をしているのではないでしょうか。 m_showアクションで`@article = Article.find_by(user_id: params[:user_id])`としていますので、現状@articleはnilとなっているはずです。 @articleの存在の有無で遷移先を変えるなどの処理が必要だと思います。 例: ``` @article.present? ? edit_article_path(@article) : new_article_path ```