スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

技術関連

【Ruby】 はてなブログのAPIで記事一覧取得時、 下書きを除外する

Nokogiriでパースして得たオブジェクトにto_sして、 scanで下書きかどうかを表す文字列を抜き出す。 # 参考にしたサイトのコードのget_entry_list()の内部 # entry = Nokogiri::XML.parse(entry, nil, 'utf-8') draft_flgs = entry.to_s.scan(/\.*/) # こん…

【Nuxt Vue Rails】axiosのContent-Typeがappliation/jsonにならない

解決策 getの場合は、 第二引数にheaders: をキーとして、 指定したいヘッダのオプションを渡せばOK。 this.$axios.get(url, { headers: { "Content-Type": "application/json", "Accept": "application/json" }}) postの場合は、 第三引数にheaders: をキー…

【Vue.js Nuxt.js】プロジェクトのrootpathを特定のページへ変更する

プロジェクトルートURL(例: localhost:3000 or localhost:3000/)でアクセスされたら、 特定のページ(例: /articles)に遷移させたい。 (プロジェクトルートのページを変更したい) .Nuxt/配下のrouter.js内にあるbaseプロパティや、 path: '/' の箇所を見て…

【Vue.js】v-modelでcheckboxの値の変更が反映されない

結論 v-modelを使わず、 「初期値設定(v-bind)」と「変更を検知して代入(changeイベント)」のように、 処理を分ければOKでした。

【Vue.js Nuxt.js】v-bindでhref属性に文字列とコンポーネントのプロパティを指定する

素の文字列とコンポーネントのプロパティを連結する場合 シングルクォートで囲った文字列 + プロパティ のようにすればOKです。 tasks/1/edit というpathにしたい場合 // idプロパティの値が「1」であるとする // 通常の文字列はシングルクォートで囲う必要…

Nuxt.jsで詳細(show)と編集(edit)画面の動的ルーティングを設定する

Nuxt.jsは、_idというファイル名もしくはディレクトリにすることで、 動的ルーティングを設定できます。 File System Routing - NuxtJS nuxtjs.org 今回、 study_roomsというリソースのCRUD画面を作成する際、 編集画面 (study_rooms/:id/edit) のルーティン…

【ActiveAdmin】レコードが無い場合の、まだありません。「作成する」を非表示に【blank_slate content link】

解決策 ActiveAdmin::Views::Pages::Indexというクラスにある、 render_blank_slate というメソッドにモンキーパッチを当てます。 render_blank_slate www.rubydoc.info ja.ymlのキー (blank_slate、content、link) github.com やり方 1、 initializerで、モ…

【Active Admin】Unable to find input class JsonInput

son型のDBカラムを、 active_adminの管理画面フォームで表示させようとすると、 Unable to find input class JsonInput のエラー。 backtraceの一部 @input_class_finder.find(as) rescue Formtastic::InputClassFinder::NotFoundError raise Formtastic::Un…

【Rails】ymlファイルの中でerbを使い、動的に値を取得してrakeタスクの引数にする

ymlファイルの中でerbを使い、 動的に値を取得してrakeタスクの引数にしようとしていた。 が、 erbを使った部分が文字列のままで渡ってきて、 上手くいかなかった。 ymlファイル例は下記。 # test.yml.erb - id: age: 18 *** こういう値が欲しいが、 #=> [{ …

【RSpec Capybara】This connection is not secure login entered on this page could be compromised【Firefox】

RSpec + Devise + Capybara + js: trueなsystem_specで、 # メルアドとパスワードを入力 fill_in :email, with: 'test@example.com' fill_in :password, with: 'password' # submit click_on 'login' 上記のようなテストシナリオにしたかったが、 テストが通…

【active_admin】json型columnのinputエリアの、初期value表示でハマる

最初に結論 json型なので、 参照時のキーは「文字列キー」にする必要がある。 シンボルじゃダメ。 それだけのことでした。 起こったこと 下記のようなjson型カラムの中にあるデータを、 active_adminのフォームの初期値として表示させたい。 t.json "options…

【Vue.js】clickで実行されるmethodsに引数を渡す

クリックで実行される関数に、引数を渡したい。 1、v-onもしくは@clickで指定する関数に、 v-on:click="someFunction(引数)" @click="someFunction(引数)" のように引数を設定する。 // component.vue Delete Task 2、methods側の関数で、 function(1で設定…

【Vue.js BootstrapVue】methodsでmodalをopen、closeする

開く this.$bvModal.hide(modalのid) 閉じる this.$bvModal.show(modalのid) bootstrap-vue-modalリファレンス 1、modalを開くボタンと、開閉したいmodalを作成 // some_component.vue // ボタン ログイン // 開閉したいmodal // modalの中身 2、引数で指定…

【Rspec Capybara】confirmダイアログが2回表示されるsystem specを書く

やり方 単純にダイアログの回数分、 accept_confirm をネストすればOK。 # 1回目のダイアログ page.accept_confirm do # 2回目のダイアログ page.accept_confirm do # ダイアログが全てOKなら実施したい何らかの処理 first('div[data-cell="del"]>div>form>b…

【Vue.js】methodsやcomputedを共通化(mixin)する

1、共通化したいmethodsやcomputed等を記述したファイルを作成する。 例として utils.js を作成します。 パスは javascript/packs/mixins/utils.js とします。 以下は、moment.jsで日時をparseする関数です。 # utils.js import moment from 'moment' expor…

【Rails】論理削除を有効にする方法【paranoia discard】

論理削除を有効にするための3ステップ 1、paranoiaというgemをインストール 2、モデルにdeleted_atというカラムを追加する 3、active_record.rbにacts_as_paranoiaと追記する class ApplicationRecord < ActiveRecord::Base acts_as_paranoia ←追記 self…

【ActiveAdmin】formのcheck_boxで、dialogやalertの代わりに注釈(hint)をつける

ActiveAdminで管理画面を作っていて、 「非エンジニアのサポートチームの人が使うから、チェックボックスにはダイアログかアラート出したいな...」 と思い、 「chack_boxをON、OFFしたらdialogかalertを出すオプション」 的なものを探していたのですが、 che…

【ActiveAdmin】has_many + nested_attributes_for + allow_destroyなassociation_formで生成される削除ボタンをカスタマイズする

「allow_destroy: true」 を使わず、 f.inputのname属性に 「:_destroy」 を指定すればOKです。 例 form do |f| f.inputs 'Contract' do # 親モデル Contract end # 子モデル Option f.has_many :options, do |o| # allow_destroy: trueは不要 o.input :_des…

【ActiveAdmin】デフォルトのcreateとupdateの処理をカスタマイズしたい

controller do〜endブロックの中で、 createなりupdateメソッドをオーバーライドすればOKです。 オーバーライドする際は、 リダイレクトの処理も書いてあげる必要があります。 ちなみに、 createもupdateも、 デフォルトのリダイレクト先は「showアクション…

【ActiveAdmin】select_boxで表示するcollectionのscopeを指定したい

結論 collectionオプションを使います。 collectionの引数に、 scopeを渡してあげればOKです。 例 f.inputs for: [:plan, f.object.plan || Plan.new] do |p| p.input :name, as: :select, collection: Plan.all.map(&:name) # Planモデルの全nameをセレクト…

【ActiveAdmin】formで、belongs_toなmodelのstrong_parameterを指定する

permit_paramsに、 子モデルの「名称」と「属性」を指定すればOKです。 例えば、 下記のようなモデルがあるとします。 # 親 class Plan attribute :name attribute :price has_many :contracts end # 子 class Contract belongs_to :plan end この場合、 Act…

【ActiveAdmin】フォームのタイトル(パネル)部分を色付けする

panel do〜endブロックの中に、 f.inputを入れてあげればOKです。 form do |f| panel '次月プラン' do f.input :name f.input :id end end するとこんな感じになります。 f:id:mah666hhh:20201107111535p:plain nameのラベルは、 I18nで翻訳が当たっているの…

【ActiveAdmin】ヘッダー下のデフォルト作成ボタンを非表示にする

config.clear_action_items! の1行を追加すればOKです。 ActiveAdmin.register Item do # これを追加 config.clear_action_items! end これで、 ヘッダータイトルの作成ボタンが非表示になりました。 f:id:mah666hhh:20201107092354p:plain clear_action_ite…

RSpecで、Base64エンコードされた画像ファイルをテストする

こんにちは、mah(@RailsRubyMah6h)です。 今回は、 RSpecでBase64エンコードされた画像ファイルをテストする です。 1、 テストに使う画像ファイルを、Base64でエンコードしたバイナリ文字列に変換する (下記のようなサイトを使うとラクです) https://lab.sy…

Rubyで画像ファイルの形式(gif, png, jpg)を判定する

こんにちは、mah(@RailsRubyMah6h)です。 今回は、 画像ファイルの形式をバリデーションする必要があったので、 備忘録として残しておきます。 今回の例では、 Base64でエンコードされた、画像のバイナリ文字列 が渡ってくることを想定します。 ファイル名の…

【2020決定版】プログラミング初心者向け、AWSで挫折しない4つの勉強法

転職を100%絶対成功させたい、駆け出しエンジニアの方へ このブログからよく購入されている、 駆け出しエンジニアのマインドセットができるnote2点です↓↓↓ 【大人気記事】駆け出しエンジニアの転職が爆速成功する15の掟|mah@スリ飯屋malanka:フリーエンジ…

【udemy】AWS認定ソリューションアーキテクト アソシエイト試験突破講座(初心者向け22時間完全コース)がおすすめ過ぎる

こんにちは、mah(@RailsRubyMah6h)です。 今回は、 【udemy】AWS認定ソリューションアーキテクト アソシエイト試験突破講座(初心者向け22時間完全コース)がおすすめ過ぎる についてです。 自分は、 AWSを網羅的に学習したい 今後有利になるようなステータ…

【Rails6】gem toastr-railsを導入できない【ReferenceError: toastr is not defined】

【Rails6】gem toastr-railsを導入できない【ReferenceError: toastr is not defined】 出ているエラー ReferenceError: toastr is not defined 結論 下記の記事の手順通りにやると、toastr-railsを入れられました。 medium.com 起きていたこと 公式ドキュメ…

【Ruby on Jets】Model.newに渡したパラメータが反映されず、valid?でfalseが返される時の対処法

転職を絶対成功させたい、駆け出しエンジニアの方へ このブログからよく購入されている、 駆け出しエンジニアのマインドセットができるnote2点です↓↓↓ 【大人気記事】駆け出しエンジニアの転職が爆速成功する16の掟|mah@スリ飯屋malanka:フリーエンジニア…

【Ruby on Jets】include ActiveModel::ValidationsがNameError: uninitialized constantエラーになる時の対処法

転職を絶対成功させたい、駆け出しエンジニアの方へ このブログからよく購入されている、 駆け出しエンジニアのマインドセットができるnote2点です↓↓↓ 【大人気記事】駆け出しエンジニアの転職が爆速成功する16の掟|mah@スリ飯屋malanka:フリーエンジニア…