#質問
Railsを使って基本的なブログ機能を実装しているのですが、カテゴリー機能がうまくいきません。
カテゴリーをつけてブログ記事を新規作成しようとするとエラーが出てDBへ保存されないという状態なのですが、エラーの原因がわからないので、助けていただけないでしょうか。
実装内容は以下の通りです。
モデル
1つの記事に対して、複数あるカテゴリーのうちの1つを付与したいので、以下2つのモデルを用意しています。
rb
1class Article < ApplicationRecord 2 #コメント機能をつけています。こちらはうまくいっていますが、何か影響を与えている可能性も考えて、一応記載しておきます。 3 has_many :comments, dependent: :destroy 4 5 belongs_to :blog_category 6
rb
1class BlogCategory < ApplicationRecord 2 has_many :articles 3end
ビュー
付与するカテゴリーはすでに作成済みで、app/view/articles/new
に以下を実装
erb
1<h1>New Post</h1> 2<%= provide :button_text, "投稿" %> 3 4<%= form_for @article do |f| %> 5 <%= f.label :category_id, "カテゴリ" %> 6 <%= f.collection_select :category_id, BlogCategory.all, :id, :name %> 7 <%= link_to "カテゴリを追加する", new_blog_category_path %> 8 <%= f.label :title %> 9 <%= f.text_field :title %> 10 . 11 . 12 . 13 <%= f.submit %> 14<% end %>
コントローラー
rb
1def create 2 @article = Article.new(article_params) 3 if @article.save 4 flash[:success] = "Successfully created..." 5 redirect_to @article 6 end 7 end 8 9private 10def article_params 11 params.require(:article).permit(:category_id, :tag_list, :title, :content) 12 end
エラー
サーバーのログで、以下のようなエラーが出ます。エラーというか、DBに保存できませんでしたという内容だと思うのですが、この原因がわからず困っています。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"trT175kWavDp5FOmuYJQQ9Q03WCLGRzkZjPoaH/kNPUeAzX8GTg8wIRzx1J651XO62cLoGJwl2WdteSeCJhq5w==", "article"=>{"category_id"=>"2", "tag_list"=>"apple, orange", "title"=>"hogehoge", "content"=>"fooooo"}, "commit"=>"投稿"} (0.1ms) begin transaction (0.1ms) rollback transaction No template found for ArticlesController#create, rendering head :no_content Completed 204 No Content in 86ms (ActiveRecord: 0.2ms)
#試したこと
カテゴリー機能を追加したところ、保存ができなくなりました。そこで、Articleモデルのbelongs_to
とビューのカテゴリーセレクトを外してみるとうまく保存できたので、アソシエーションのところで何か足りていないor間違っているのでしょうか。
色々と調べて試してみたのですが、解決できずこちらで質問させていただきました。
ご回答をお願いいたします。