各ページで共通するようなヘッダーやフッターはpertialの中に記述する
<%= render 'partial/header' %>
/views/partial/_header.html.erb のようにpartialの先頭にはアンダースコアをつける。
devise使用時 deviseをユーザモデルに紐づける場合は 'rails g deivse User' とする
そうすると、route.rbに自動的にdevise用のルーティングが設定されます。
deviseを作成した時点で、viewファイルは作られているが見えていない。編集するために `rails g devise views' をする必要あり
deviseを導入することによって使える メソッドが存在する
current_user(現在ログインしているユーザ) など
authenticate_user!などのヘルパーメソッドも含む
strong parameterを理解したい
before_action :authenticate_user!
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:account_update, keys: [:name])
end
localの言語設定を変更したい時はja.ymlを作成して該当の箇所に追記。
resourcesの記法
resources :list, only: %i(new create)
ストロングパラメータ
params.require(:list).permit(:title).merge(user: current_user)
link_to記法
link_to(content_tag(:i, '', class: 'fas fa-pen'), edit_list_path(list))
deleteメソッド と destroyメソッドの違いについて
deleteメソッドは指定した条件に合致するレコードを一件削除する。
destroyメソッドはモデルを通して指定した条件に合致するレコードとそれに関わるレコードも削除する。
関連付けさせたモデルにdependent: :destroyを指定していれば、関連付けされたモデルも削除される。
外部キーとは
ルーティングをネストする
この時の @valid? の使い方が分からない
def create
@card = Card.new(card_params)
if @card.save
redirect_to :root
else
@card.valid?
render action: :new
end
end
select文とは?
<%= select :card, :list_id, @lists.map{ |l| [l.title, l.id] }, {}, { class: 'form-control' } %>