TECH EXPERT 53日目

TECH::EXPERT

とりあえずメインのコントローラーができたので、今回からはviewに移ります。
といってもマークアップだけじゃなくて同時に機能実装もするので裏方もやるんですがね。
久しぶりのCSSなので覚えてないことや知らないことがいっぱい。
久々に記事更新しなくちゃ。

css

背景の透過

rgbaでアルファチャンネルを0にすれば完全透過。
1は不透明。

background-color: rgba(0,0,0,0);

haml

submitボタンにアイコンを配置

f.submitの場合はtextしかいれられないため、buttonのtypeをsubmitにして内部にアイコンを格納する。buttonなら文字列もアイコンも格納できる。

= form_with(url: root_path, method: :get, local: true) do |f|
  = f.search_field :keyword, placeholder: "何かお探しですか?"
  = button_tag type: 'submit' do
    %i.fa.fa-search

rails

.delete()

stringに対して用い、特定の文字を削除する。

"hoge".delete("h")
=> oge

破壊的な変更はdelete!とする。
注意点としては、delete!(“hogehoge”)でhogehogeが含まれない場合、nilが返る。

validator

バリデーションフォルダやファイルを作成した場合、rails sをやり直さないとuninitialized constなどのエラーが出る。

task

定期的に実行したい処理は、lib/tasks以下のディレクトリに、rakeタスクを作成して処理を記述する。

taskの作成

rails g task task名

以下のファイルが作成される。

lib/tasks/task名.rake

namespace :task_sample do
end
namespace :user do
  desc "ユーザー情報をリセットする"
  task reset_flag: :environment do
    User.update_all(flag: false)
  end
end

実行する。

rake task user:reset_flag

helperメソッド

app/helpers/product_helper.rb

module ProductsHelper
  def converting_to_jpy(price)
    "#{price.to_s(:delimited, delimiter: ',')}円"
  end
end

数値の桁区切り、通過表示

to_s(:delimited), number_with_delimiter

to_s(:delimited)だけで桁区切りは, 小数点区切りは.が与えられる。
桁区切りはdlimiterを指定することで記号を変更できる。
小数点区切りはseparator。

1000.to_s(:delimited, delimiter: ' ', separator: ',')

to_s(:currency)

ワンライナー

array = [1, 2, 3, 4, 5].map do |el| 
  if el.odd?
    el 
  end
end.compact!
array = [1, 2, 3, 4, 5].map { |el| el if el.odd? }.compact!
array = (1..5).to_a.delete_if { |el| el.even? }
array = (1..5).to_a.delete_if(&:even?)
array = [1, 2, 3, 4, 5].select{ |el| el.odd?}

delete_if

hash.delete_if(|key, value| 条件 )
array.delete_if(|element| 条件 )

ブロックの戻り値がtrueの時、要素を削除する。
ハッシュに使う場合はキーと値を削除する。

配列から複数の要素を削除

「-」メソッドで差分が取れる。

a = [hoge, fuga]
b = [hoge]
c = a - b
=> [fuga]

dig

ハッシュに対して使う。
ネストされたハッシュに対してキーを順に参照して値を返す。

hash={key1: {key2: {key3: "hoge"}}}
hash.dig(:key1, :key2, key3)
=> hoge

routes

namespace do

namespaceに付けた名前がurlの先頭に付与される。

namespace :admin do
  namespece :users do
    resources :hoges, only[:index]
  end
end

admin/users/hoges

コメント