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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1107閲覧

enumでカラムに0しか保存されず、ビューに表示されない

keisuke.F

総合スコア19

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/07/01 09:19

編集2020/07/01 09:33

前提・実現したいこと

Railsで簡単な曲登録アプリを作成しています。

selectで選択したものがしっかりと保存されるようにし、その情報がビューに表示されて欲しい。

発生している問題・エラーメッセージ

enumを使用してselectタグを作成。enum_helpで日本語化しています。

selectでどれを選択してもsequel proでは0しか保存されていない。
(アーティスト名や曲名は問題なく保存されます。)
登録した情報がビューに表示されない。
(全て表示されません)

song.rbを文字列ではなく0,1にすると、ビューにsingと固定されて表示されてしまいます。

該当のソースコード

song.rb

Ruby

1class Song < ApplicationRecord 2 enum level: {sing: "sing", practice: "practice"} 3end

new.html.haml

Ruby

1.header 2 .header-logo 3 = link_to 'Song_Regi', root_path 4 .header-content 5 = link_to '曲一覧に戻る', root_path 6 7.main 8 .registration 9 = form_for @song, html: {class: 'form-group'} do |f| 10 = f.label :artist, class: "form-title" 11 = f.text_field :artist, class: 'form-control', placeholder: "アーティストを入力" 12 = f.label :title, class: "form-title" 13 = f.text_field :title, class: 'form-control', placeholder: "曲名を入力" 14 = f.label :level, class: "form-title" 15 = f.select :level, Song.levels_i18n.invert, {}, class: 'form-control' 16 = f.submit '作成する', class: "btn-primary"

main.html.haml

Ruby

1.main 2 .table-responsive 3 %table.chart 4 %thead.chart__top 5 %tr 6 %th アーティスト 7 %th タイトル 8 %th レベル 9 %th メモ 10 %tbody.chart__contents 11 %tr.chart__contents--item 12 %td 13 = @song.artist 14 %td 15 = @song.title 16 %td 17 = @song.level 18 %td 19 = @song.content

songs.controller.rb

Ruby

1class SongsController < ApplicationController 2 3 def index 4 @song = Song.new 5 end 6 7 def new 8 @song = Song.new 9 end 10 11 def create 12 @song = Song.new(song_params) 13 @song.save 14 redirect_to root_path 15 end 16 17 private 18 def song_params 19 params.require(:song).permit(:title, :artist, :content, :Level) 20 end 21 22end

補足情報(FW/ツールのバージョンなど)

haml-rails (2.0.1, 1.0.0)
Ruby on rails 5.2.3

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

params.require(:song).permit(:title, :artist, :content, :Level)

:Levelと大文字になっている事が気になります。

p paramsやログ・エラーページからParametersを見てそれに合わせる必要があります。

投稿2020/07/01 09:34

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keisuke.F

2020/07/01 10:54

ご回答ありがとうございます。 ストロングパラメータを:levelと編集をしたら、Incorrect integer value:とエラーが出ていたので、モデルの文字列を数値に変更しました。 songs.rb class Song < ApplicationRecord enum level: {sing: 0, practice: 1} end しかしながらエラーは解決できたものの、ビューに登録した内容が反映されず、何もせずともビューにsing という文字が出ています。 お手数おかけいたしますが、よろしくお願いいたいします。
asm

2020/07/01 11:19

practiceを選択したデータをsave後データベース上で確認した時に 1が保存されていないという事でしょうか?
keisuke.F

2020/07/01 12:16

そうです。 1のpracticeを選択しても、データベース上では0と保存されてしまいます。
keisuke.F

2020/07/02 07:14

解決しました。 ありがとう御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問