最近在我身上发生了一件奇怪的事。
我有两个模型:
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 版本相同(1.9.3p194 via rvm)
导轨版本:3.2.3
使用 Capistrano 进行部署
我还尝试在虚拟 Debian 机器上本地重现它以进行调试。但我没有成功。
有人可以告诉我发生了什么吗?提前致谢!