yachiiiyo
@yachiiiyo (龍聖 八千代)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

rails カテゴリー機能 追加ボタンを押しても追加されない

解決したいこと

rails でカテゴリー機能の実装をしています。
categoryのカラムを作成し、controller,viewを作成しましたが
カテゴリーの項目を入力し、追加しましたがその後追加されないです。
追加されるようにしたいです。

発生している問題・エラー

エラーなどは出ていないです。

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

### index.html.erb

<%= content_tag :div, nil, class: 'row' do %>
  <%= content_tag :div, nil, class: 'col-xs-3' do %>
    <%= form_with model: @category, local: true do |f| %>
      <%= f.label :name, '|カテゴリー名' %>
      <%= content_tag :br %>
      <%= f.text_field :name, class: 'form-control' %>
      <%= content_tag :br %>
      <%= f.submit '追加', class: 'btn btn-primary btn-block' %>
    <% end %>
  <% end %>

  <%= content_tag :div, nil, class: 'col-xs-9' do %>
    <%= content_tag :table, nil, class: 'table' do %>
      <%= content_tag :thead do %>
        <%= content_tag :tr %>
          <%= content_tag :th %>
            |カテゴリー名
          <%= content_tag :th %>
          <%= content_tag :th %>
      <% end %>
      <%= content_tag :tbody do %>

        <% @categories.each do |category| %>
          <%= content_tag :tr %>
            <%= content_tag :td %>
              <%= category.name %>
            <%= content_tag :td %>
              <%= link_to '編集', edit_category_path(category), class: 'btn-sm btn-primary' %>
            <%= content_tag :td %>
              <%= link_to '削除', category_path(category), method: :delete, data: 
              {confirm: '本当に削除しますか?'}, class: 'btn-sm btn-danger' %>
        <% end %>
      <% end %>
    <% end %>
  <% end %>
<% end %>
###categories_controller.rb

class CategoriesController < ApplicationController
  before_action :set_category, only: [:edit, :update, :destroy]

  def index
    @category = Category.new
    @categories = Category.all
  end

  def create 
    @category = Category.new(category_params)
    if @category.save
      redirect_to categories_path
    else
      @categories = Category.all
      render 'index'
    end
  end


  def update
    if @category.update(category_params)
      redirect_to categories_path
    else
      render 'edit'
    end
  end

  def destroy
    @category.destroy
    redirect_to categories_path
  end


  private

    def set_category
      @category = Category.find(params[:id])
    end

    def category_params
      params.require(:category).permit(:name)
    end
end

自分で試したこと

様々なサイトを参考にして作成してみました。

rails c で Category.allを入力し、

2.6.3 :002 > category = Category.all
(1.7ms) SELECT sqlite_version()
Category Load (0.2ms) SELECT "categories". FROM "categories" LIMIT ? ["LIMIT", 11]
=> #

と出ましたが入力した内容が入っていないです。

0

1Answer

def create 
  @category = Category.new(category_params)
  if @category.save!
    redirect_to categories_path
  else
    @categories = Category.all
    render 'index'
  end
end

こうしたらエラーが表示されますか? save!

それと

categoryのカラムを作成し

という風に表の事をカラムと言われる人が度々いますが、データベースは表があって、表に行列がある。
表とはエクセルの1つのシートみたいなイメージで、シートには行列がある。
シートに名前をつけたらそれがデータベース。

Categoryというシートを作って、行にデータを入れてるイメージ。行にデータがあるからそれぞれの項目名として列がある。

表=Table(テーブル)
行=Row(ロー)
列=Column(カラム、コラム)

0Like

Comments

  1. @yachiiiyo

    Questioner

    申し訳ございません。

    モデルの関連付けに誤りがありました。
    category.rb
    class Category < ApplicationRecord
    has_many :posts, dependent: :destroy
    end
    post.eb
    class Post < ApplicationRecord
    belongs_to :user
    belongs_to :category
    end

    上記二つのファイルの関連付けが逆になっていたので動きませんでした。

    ご丁寧な説明ありがとうございます。

Your answer might help someone💌