質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

解決済

railsで「Couldn't find Category with 'id'=」を解決できません。

yuta_tokyo
yuta_tokyo

総合スコア35

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

1回答

0リアクション

0クリップ

11224閲覧

投稿2017/01/07 14:35

編集2017/01/07 14:38

どなたかご教授ください。

現在、1対1の関係でCategoryとPost,1対多の関係でPostとCommentsでwebアプリケーションを制作しようとしています。

PostするときするときにCategoryを選択する仕様を実装し、
post.title,post.name(投稿者),p_cat(ポストに紐づいたカテゴリー)を送信したいです。

###現在postしたときに表示されるエラーメッセージ
ActiveRecord::RecordNotFound in PostsController#create
Couldn't find Category with 'id'=

###Categoryのカラムにすでにデーターは入れています
以下はコンソール上で、Category.allを実行したときの様子です。

$ Category.all => #<ActiveRecord::Relation [#<Category id: 1, p_cat: "#####", created_at: "2017-01-07 13:00:02", updated_at: "2017-01-07 13:00:02">,

###以下のコードは今回のエラーに関係ありそうなコードです
▼routes.rb(一部)

resources :category do resources :posts end resources :posts do resources :comments end

▼Postの_form.html.erbです

<%= form_for(post) do |f| %> <% if post.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2> <ul> <% post.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= f.label :title %> <%= f.text_field :title %> </div> <div class="field"> <%= f.label :name %> <%= f.text_field :name %> </div> <%= f.collection_select :id, Category.all, :id, :p_cat %> <div class="actions"> <%= f.submit %> </div> <% end %>

▼categoryのdb>migrateファイルです

class CreateCategories < ActiveRecord::Migration[5.0] def change create_table :categories do |t| t.string :p_cat t.timestamps end end end

▼postのdb>migrateファイルです

class CreatePosts < ActiveRecord::Migration[5.0] def change create_table :posts do |t| t.string :title t.string :name t.references :category, foreign_key: true t.timestamps end end end

▼posts_controller.rbのcreateアクションです

def create @category = Category.find(params[:category_id]) @post = @category.posts.create(post_params)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。