options_from_collection_for_select可以避免刷新问题

时间:2010-10-24 09:23:20

标签: javascript ruby-on-rails

我知道我可以在选择框中使用options_from_collection_for_select来显示其中的选项列表。如果我添加(first.id),它将选择第一个选项作为默认预选。示例:

options_from_collection_for_select(@hauses, 'id', 'timebuild', @hauses.first.id)

但是,如果在index.rhtml中,我将此选择框与第一个选项作为默认选择,每次刷新页面时,它仍将再次选择第一个选项,而不是当前选项。

请指导,如何更改上面的参数,所以当用户选择示例选项2,然后刷新页面时,它不会更改为选项1,但仍然在选项2中。也只是第一次页面加载,它将显示选项1(默认)。

谢谢

1 个答案:

答案 0 :(得分:0)

好的,所以你希望选择框有一个默认值。凉。但是你不应该在options_from_collection中设置它。

您应该在将存储此ID的对象中设置它。

方法签名是

options_from_collection_for_select(collection, value_method, text_method, selected = nil)

因此,所选的值应该是您选择的值。如果您正在做类似

的事情
form_for @super_cool do |f|
  ...
  select_tag...
    options_from_collection_for_select(@hauses, 'id', 'timebuild', @super_cool.hause_id)

此外,collection_select更容易......在我的例子中,

form_for @super_cool do |f|
  ...
  f.collection_select :hause_id, @hauses, :id, :timebuild