Ajaxで手数料と利益の計算をするの巻①
Ajaxとは
Asynchronous JavaScript and XMLのことで、JavaScriptを使用して非同期にサーバーとやり取りするための技術です。 これにより、ページをリロードせずにデータを取得したり送信したりすることができます。
loadイベントとturbo:loadイベントがありますが、後者がAjaxです。 loadイベントの場合、ページ全体が再読み込みされます。 turbo:loadイベントの場合、ページの一部の要素だけが非同期的に更新されます。
window.addEventListener('turbo:load', () => {
このように記述すると非同期通信となり、ページ全体がリロードされないことでより動的で迅速なウェブアプリケーションとなります。 わたしは両方で記述して操作してみましたが、体感的にはまったくわかりませんでした。 目に見えないJavaScript のがんばりなのでしょうか。
先日の続きでJavaScript の実装に取り組んでおります。 いやぁ、なかなか入ってこない、JavaScript さん... 苦手やわぁ。
カリキュラムを見返しつつ、いろいろ検索しつつ、なんとかできた! JavaScript の指先に少しふれられた気がした。
最終課題ではmustではありませんでしたが、復習を兼ねてitemのテストコードを書いてみよう! と軽い気持ちで手を付けたらまぁ大変。 テストがスムーズに通るまでに半日以上かかってしまいました... 次回へ続く...
ActiveHash
ActiveHashとは
ActiveHashは、Ruby on Railsフレームワークで使用されるGem(ライブラリ)の1つです。 ActiveHashを使用すると、データベースの代わりにモデル内にデータを格納して扱うことができます。 ActiveHashを使うと、データベースにテーブルを作成する必要がなくなります。 例えば、アプリケーション内で使う設定情報や、ドロップダウンリストの選択肢など、データベースに格納するほどの規模ではない、 でもコードからアクセスできるようにしておきたいデータに活用されます。
こんな感じです。 Webページでよく目にするプルダウンから選択する、あれですね。
ActiveHashにアソシエーションを設定する場合、またバリデーションをかける場合、それぞれ決まりがあります。
ActiveHashを用いて、belongs_to
を設定するには、extend ActiveHash::Associations::ActiveRecordExtensions
と記述します。
また、has_many
を設定するには、include ActiveHash::Associations
と記述します。
アソシエーション組むにもひとくせあります。 AvtiveHashで定義されているmoduleというものを取り込む必要があるためです。
バリデーションについては、idに数字を付与して設定します。
なので、カラムの型はstringではなくintegerです。
また、選択必須ということであってもprecence: true
ではなく、numericality: { other_than: ●}
というヘルパーメソッドを使用します。
●の部分に『1』と記述することで、『1』以外の選択をされた場合に検証は成功となりデータベースに保存されます。
『1』が『---』にあたるので選択必須という条件がクリアとなるわけです。
最初、ここをprecence :true
で考えていたらどうやら違っていたみたいで、それ以外にも継承するモデル名の大文字小文字間違いとか、
end
の記述もれ、位置のずれなどなど、エラー満載でなかなか進まない。
でも、提出期限があるわけではないので、自分の納得いくまで試行錯誤できるので満足感あり。 めっちゃ疲れるけど。でもでも、楽しいです。
次は苦手なJavaScript!がんばります!!
ついこの間まで、県が主催するコーディングブートキャンプに参加していました。 そこで携わったフリマアプリを目下復習中です。 チーム開発に参加しておりまして、開発中も思っていましたが、自分ひとりでやってみてさらに深まるチームメンバーへの感謝。 みんな大変だったんだなと、つくづく感じる今日この頃です。
走馬灯のようにカリキュラムを進めたものだから、理解が追いついておらず。最初からひとりで実装してみようと試みております。 ユーザー管理機能を実装中から気づきはたくさんあったのですが、忘れちゃったので...
記憶定着のためにも、今からでも綴っていこうと思います。