【三日目】ChatSpaceグループ機能のルーティング設定、ビュー設定
グループ機能のルーティング設定
そもそも、「ルーティングとは?」
ブラウザから届いたリクエストに対して、コントローラで定義したアクションを結びつける機能です。
resourcesを使えば、一括で複数のHTTPメソッドを設定できるため、大変便利です。
1 |
$ Rails.application.routes.draw do |
上記の通り、groupsのルーティングを設定。
ここで考えないといけないのが、messageにはmessage先が存在しています。
今回の場合だと、message先のグループがなければ、どのgroupに対してのmessageなのかわからなくなります。
messageを投稿する際、どのgroupへのmessageなのかパスから判断するようにしたいので、ネストという方法を使います。
?ネストとは?
入れ子構造とも呼ばれ、ある記述の中に入れ子構造で別の記述をする方法です。
ルーティングだと、あるコントローラへのルーティングの記述の中に、別のコントローラへのルーティングを記述することを指します。
赤字部分がネストになっております。
collection_check_boxes
1 |
$ = form_for @group do |f| |
:user_idsは更新対象のオブジェクト、つまり@groupが持つメソッド。チェックボックスの各チェックにIDが関連付けられます。createアクションを実行する時には、ストロングパラメータの設定が必要です。
:idは表示させるそれぞれのvalueの内容を表し、:nameは表示させるtextを示します。
続いて、ストロングパラメータを編集していきます。いまのままだとparamsのpermitはfalseとなるので以下をコントローラに記述します。
1
$ private
def group_params
params.require(:group).permit(:name, { :user_ids => [] })
errors_full_message
Railsのモデルにおいて、バリデーションエラーが発生した場合、errors.full_messagesメソッドを利用することで、発生した全てのエラーメッセージを配列で取得することができます。
@group.errors.full_messagesの配列に対し、eachメソッドを用いることで、エラーメッセージを1つずつ取り出しています。
1 |
$ .chat-group-form__errors |
今日はここまで。