最近私に奇妙なことが起こりました。
私は2つのモデルを持っています:
class Direction < ActiveRecord::Base
has_many :specializations, dependent: :destroy
end
and
class Specialization < ActiveRecord::Base
belongs_to :direction
end
どちらにも というフィールドがありますtitle
。
グループ化された選択でフォームを作成しました(どのモデルにも関連付けられていません):
= simple_form_for :some_name do |f|
= f.input :specialization_id, collection: Direction.all,
as: :grouped_select,
group_method: :specializations
そして、私のローカルマシンではすべてがうまくいっています。私の選択は次のようになります。
Direction1 title
Specialization1 title
Specialization2 title
...
Direction2 title
Specialization3 title
Specialization4 title
...
...
ステージング サーバーにデプロイしたとき、ちょっとした驚きがありました。私の選択出力は次のようになりました:
#<Direction:0xb02fb60>
#<Specialization:0xaa5fb10>
...
#<Direction:0x991cf90>
#<Specialization:0xb02f868>
...
:to_s
ではなく、ラベルメソッド(および値メソッドも)として呼び出しているようです:title
。
この問題は、これらのメソッドを明示的に指定することで修正されます。
= simple_form_for :some_name do |f|
= f.input :specialization_id, collection: Direction.all,
as: :grouped_select,
group_method: :specializations,
group_label_method: :title,
label_method: :title,
value_method: :id
しかし、なぜそれが起こったのか知りたいのですか?こういう驚きは好きじゃない。: )
いくつかの詳細:
ローカル マシンは MacOS Lion を実行しています
ステージング サーバーは Debian Squeeze 上にあります
Rubyのバージョンは同じ(rvm経由で1.9.3p194)
レールのバージョン: 3.2.3
カピストラーノでデプロイする
また、デバッグ目的で、仮想 Debian マシンでローカルに再現しようとしました。しかし、私は成功しませんでした。
誰かが私に何が起こっているのか教えてもらえますか? 前もって感謝します!