我的轨道中有以下选择下拉列表。我正在遵循API(http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select)的语法:
collection_select(object,method,collection,value_method,text_method,options = {},html_options = {})
<%= collection_select(:sources, :source_id, Source.all, :id, :name, :include_blank => "Please select a source...", html_options = {:onchange => "updateTextArea()"} ) %>
function updateTextArea(){
alert('source changed')
}
当我不包含html_options时,我可以使用下拉菜单显示数据库中的值。但是,我一直试图让onchange动作发生。
答案 0 :(得分:0)
我认为选项需要在哈希中(当前你有include_blank
的部分)。尝试更改此
<%= collection_select(:sources, :source_id, Source.all, :id, :name, :include_blank => "Please select a source...", html_options = {:onchange => "updateTextArea()"} ) %>
到这个
<%= collection_select(:sources, :source_id, Source.all, :id, :name, options = {include_blank: "Please select a source..."}, html_options = {:onchange => "updateTextArea()"} ) %>
答案 1 :(得分:0)
我相信代替options =
或html_options =
您需要传递实际哈希本身(就像您实际使用include_blank => true
所做的那样)。我只会用花括号明确标记这些哈希值来分隔它们:
<%= collection_select(:sources, :source_id, Source.all, :id, :name, { :include_blank => "Please select a source..."}, {:onchange => "updateTextArea()"} ) %>
希望这有帮助。
编辑:
我忘了补充一点,如果updateTextArea()
JS函数没有绑定到窗口,那么拾取它可能会有问题(过去我遇到了类似的问题)。为了安全起见,我也会这样做(如果您不使用CoffeScript):
window.updateTextArea = function() { /* Your code */ }