Railsパラメータとは何ですか?それらを正しく使用する方法
Railsパラメータについて話しましょう!
なぜそれらは有用ですか?
ユーザーは、3つの異なる方法でWebアプリケーションにデータを送信できます。
これらの3つの方法は :
- クエリパラメータの使用(
"example.com/?q=bacon"
) - フォームの送信(
"/users/sign_in"
) - URL自体の内部(
"/books/1"
)
Railsからこのデータにどのようにアクセスしますか?
params
を使用 。
コントローラーアクションの内部 params
を呼び出すことができます フォームとURLクエリデータにアクセスする 。
params
とは 、正確に?
これは、ActionController::Parameters
を返すメソッドです。 オブジェクト、実際にはハッシュのように動作します。
今。
このparams
から1つの値を読み取りたいとします。 ハッシュ。
方法は次のとおりです :
params[:id]
存在する場合は値を取得します。
またはnil
そうでない場合。
知っておくべきことはほとんどありません :
- フィールドを空白のままにすると、空の文字列が表示されます
-
params
内のすべての値 文字列です。整数として送信された場合でも
Railsのパラメータをもう少し詳しく見てみましょう。よく理解していない場合 それらは混乱や奇妙な問題の原因となる可能性があります!
レール規則:フォームフィールドとパラメータ
フォームフィールドとURLパラメータをparams
にマッピングする方法 キー?
例があります。
ここ :
これは、POSTリクエストを/search
に送信する単純な検索フォームです。 。
その結果、このparams
を取得できます オブジェクト:
{ "q"=>"", "controller"=>"books", "action"=>"search" }
この「q」とは何ですか?
これは、HTMLフォームの入力フィールドのname属性です。 。
名前は好きな名前にすることができます。
form_for
を使用してフォームを作成する場合 ヘルパーメソッド。名前は自動生成され、特定のパターンに従います。
ここに例があります :
# form_for(@book) with a few fields generates something like this
このbook[title]
フィールド名のフォーマットはparams
を生成します 値がネストされるハッシュ。
例を挙げて説明しましょう :
{ "book"=> { "title"=>"", "author"=>"", "cover"=>"", "language"=>"English" } }
ユーザーが空白のフォームを送信すると、これが表示されます。
コントローラから…
このようにデータにアクセスします :
params[:book][:language] # "English" params[:book][:author] # ""
これはハッシュのように動作しますが、通常のハッシュとは異なり、記号と文字列の両方を同等のキーとして受け入れることに注意してください。
そのparams["book"]
を意味します &params[:book]
同じです。
パラメータを受け入れるためのルートの有効化
クエリパラメータに加えて、RESTスタイルのパラメータを有効にすることもできます。
Railsでは、これを「動的セグメント」と呼んでいます。
例を見てみましょう。
次のようなルートがある場合 :
get 'books/:id', to: 'books#show'
または :
resources :books
このようなURLを使用できるようになります :
/books/1
次に、この1
にアクセスできます 、これはid
books/:id
内 。
params
を使用 。
このように :
params[:id]
これは、ユーザーが探している特定のリソースを見つけるのに役立ちます。
Book.find(params[:id])
強力なパラメータを理解する
次へ:
オブジェクトをデータベースに保存しようとしても、機能しないようです。
Railsサーバーログを見てください。
これが表示される場合があります :
Unpermitted parameter: :language
これはどういう意味ですか?
Railsは、セキュリティ機能としてRails4に戻って「強力なパラメータ」システムを導入しました。
属性をホワイトリストに登録する必要があります 保存できます。
これにより、悪意のあるユーザーがadmin = true
を設定できる「一括割り当て」と呼ばれる問題が回避されます。 、または通常はアクセスできない他のフィールドを設定します。
このようなフィールドをホワイトリストに登録できます :
def book_params params.require(:book).permit(:title, :author, :cover, :language) end
これはどのように機能しますか?
require
メソッドはparams[:book]
を検索します &そこにない場合はエラーを発生させます。permit
methodは、許可された(ただしオプションの)属性のリストです。
その結果、新しいparams
が返されます これらの属性を使用してハッシュしますが、データベースに保存できるようになりました。
例 :
Book.create(book_params)
通常のRubyハッシュはこのセキュリティシステムをバイパスすることに注意してください。
例 :
Book.create(title: "", author: "", cover: "")
属性名(author
など)があれば、これで問題ありません。 )はハードコーディングされています。
概要
Railsパラメータ、それらがどのように機能するか、そしてRailsプロジェクトでそれらを正しく使用する方法について学びました!
今度はあなたが練習し、メモを取り、レビューする番です🙂
読んでくれてありがとう。
-
Google Maps Plus コードとその使用方法
Google マップとコードについては聞いたことがあるかもしれませんが、詳しく学ぶ時間がありませんでした。または、Google マップを使用しているときに場所のプラス コードを見て、それが何なのか疑問に思ったことがあるかもしれません。 ここでは、プラス コードとは何か、その目的、Google マップでの使用方法について簡単に説明します。 Google マップ プラス コードとは 地球上のすべての地点は、緯度と経度の座標を使用して配置できます。ただし、この長い数字列は、常に場所を見つける最も便利な方法とは限りません。これを念頭に置いて、Google のチューリッヒ エンジニアリング オフィス
-
Windows Sysinternals:その概要と使用方法
Windows コンピューターを完全に制御したいと思ったことはありませんか?ほぼすべての Windows プロセスまたはアプリケーションの内部を確認できるだけでなく、アプリケーションがアクセスしているファイルやレジストリ エントリをリアルタイムで表示できるというのは素晴らしいことです。 最も評判が良く強力な Windows システムおよび管理ツールキットの 1 つは Sysinternals です。ほとんどのユーティリティは単純な EXE ファイルであり、USB フラッシュ ドライブに配置することで、システム管理用の Windows ポータブル アプリのコレクションに追加できます。 Wind