【jQuery】selectボックスのchangeイベントを検知できない

jQueryを用いて,selectボックスの値に応じて何かしたいというパターンは多いですよね.jQuery.changeを用いればselectボックスの値の変更を検知することができます.

しかし,他のイベントと異なりjQuery.changeは定義の仕方を誤ると動作しません.

【動かない例】

(function() {
  $('#sample_select').change(function() {
    // 内容
  }));
)(jQuery);

【正しいコード】

そのままでは動かなかったので,jQuery.readyを使う必要があります.(よくよく考えてみれば,DOMの読み込みが完了してからセレクタを使わないとダメですよね…)

jQuery.readyは以下の様にも記述できます.

$(function($) {
  $('#sample_select').change(function() {
    // 内容
  });
});

jQueryを使うときは,基本的にはjQuery.ready(function() {})あるいは$(function() {})で囲むように注意しましょう.

【学生必見】個人や部活でGitHubのプライベートレポジトリを無料で使おう!

“GitHub”は、”Git”で管理されたソースコードのまとまり”レポジトリ”を置いておくためのサーバを提供しているサービスです。

GitHubの無料枠では”レポジトリ”はオープンソースとして世界中の人々に公開されます。なので、プライベートなプロジェクトのソースコードや、公開できないものでは使えませんね。有料プランでは、この”プライベートリポジトリ”を持つことができますが、学生であればそこまで払いたくないですよね。。。

ですが、学生は無料で使えちゃう方法があるんです!

その方法を、紹介したいと思います。

Continue reading

RailsでYARDをRakeから使う方法

Railsでドキュメント生成ツールの『RDoc』ではなく、『YARD』を使う方法を紹介します。

1. Gemfileにyardを追加

# Gemfile
group :doc do
  gem 'yard', require: false
end

追加後に、bundle installでgemを更新してください。

2. Rakeタスクで実行できるようにする

RDocの様にYARDをRakeタスクから実行できるようにしてみましょう。

bundle exec rails g task yardoc
# lib/tasks/yardoc.task
require 'yard'
require 'yard/rake/yardoc_task'

YARD::Rake::YardocTask.new do |t|
  t.files = %w(
      app/models/**/*.rb
      app/controllers/**/*.rb
      app/helpers/**/*.rb
      app/mailers/**/*.rb
      lib/**/*.rb
    )
  t.options = []
  t.options = %w(--debug --verbose) if $trace
end

これで、bundle exec rake yardocを実行すれば、doc/以下にドキュメントが生成されます。

 

RDocと比べて、YARDの方は書式タグが充実しているので、フォーマットに統一感が出て良いですね。

 

参考サイト

SH2マイコンでインベーダーゲーム

長野高専の電子情報工学科には『マイコンシステム』という授業があり、マイコンボードを使った実習をします。

このボード上でTFT液晶とSDカードを使ってゲームを作る、という授業課題が出たので『インベーダーゲーム』を作ってみました。登場する敵キャラが顔文字なので、名付けて『ASCII INVADER』ですw(以前にも…CUIで

Continue reading

has_manyで関連元のオブジェクトに依存した条件を付けたいとき

Railsのモデルで、has_manyの関連で関連先を絞り込むために条件を付けたいときがありますよね。

Rails Guidesにもあるように、 第2引数でlambda式を渡して条件を付けることができます。

has_many :users, -> { where("created_at > ?", Time.now) }

こんな感じで。

where以外にorderなども使えるので、予めソートしておきたい場合などに便利です。

これぐらいであれば、Rails Guidesや書籍、他のサイトにも載っている情報だと思います。

 

しかし、こんなシーンではどうしますか?

「関連元のオブジェクトのフィールドに依存した条件を付けたい」

つまり、has_manyを書いているモデル自身のフィールド値を、このlambda式内に伝える方法です。

実は、このやり方はRails Guidesでも紹介されていない上に、あまりググっても出てこない情報です。(私調べ)

Continue reading