我最近发生了一件奇怪的事
我有两种模型:
class Direction < ActiveRecord::Base
has_many :specializations, dependent: :destroy
end
and
class Specialization < ActiveRecord::Base
belongs_to :direction
end
它们都有一个称为 标题
的字段。
我用一组选择制成表格( 与任何模型无关) :
= 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
作为标签方法(和价值方法),而不是:标题
。
确定问题的方式是明确规定这些方法:
= 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狮子
发送服务器在Debian Squeeze 上
Ruby 版本相同(1.9.3p194 rvm)
铁路版本:3.2.3
与Capistrano一起部署
我还试图在本地用虚拟Debian机器复制它,用于调试目的。但我没有成功。
谁能告诉我发生了什么?