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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

Q&A

解決済

1回答

531閲覧

paramsによる出力でハッシュを外したい

chocolate24

総合スコア125

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

0グッド

0クリップ

投稿2020/04/10 11:29

現状

railsでブログアプリ(単純)を開発中で、投稿の際に利用者に文章(text)を入力してもらいます。
その際にストロングパラメータを使うのですが、params.permit(:text)ではうまくいかず、requireの仕組みもよくわからないままコピペしたら出力が変になってしまいました。

問題のところ

イメージ説明

こう入力すると

イメージ説明

ハッシュ形式でtextが出てきてしまいます。
(test_userはユーザー名なので気にしないでください)

これを{"text"=>"test"}ではなくて単にtestと出力させたいです。

コード

ruby

1#tweetsコントローラー 2class TweetsController < ApplicationController 3 def index 4 @tweets= Tweet.all.order(id: "DESC") 5 end 6 7 def new 8 @tweets = Tweet.new 9 end 10 11 def create 12 Tweet.create(text: tweet_params.permit(:text),user_id: current_user.id,user_name: current_user.username) 13 end 14 15 private 16 def tweet_params 17 params.require(:tweet).permit(:text) 18 end 19end 20

ruby

1#new.html.erb 2<%= form_with(model: @tweets,local: true) do |f| %> 3 <%= f.label :text %> 4 <%= f.text_field :text %> 5 <%= f.submit %> 6<% end %> 7

開発環境

rails
aws
データベースはmysql

補足

ruby

1params.permit(:text)

これではエラーが起き、ストロングパラメータがうまくできなかったことも疑問でした

長くてわかりづらいのですが、知識のある方アドバイス等お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Tweet.create(text: tweet_params.permit(:text),user_id: current_user.id,user_name: current_user.username)

Tweet.create( tweet_params.merge(user_id: current_user.id, user_name: current_user.username )

なお、@tweets は @tweet になおしてください。
回答者は全ての行を舐めるようには読みません。
複数形で書かれていると、「複数のtweetが取り込まれている変数である」と認識して読み進めますから、間違えた解釈につながります。
このくらい短いプログラムなら気が付きやすいですが長くなると致命的になりかねません

投稿2020/04/11 00:38

winterboum

総合スコア23329

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

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

chocolate24

2020/04/11 04:08

ありがとうございました。解決できました!また変数名など分かりやすく書くように心がけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問