如何添加onchange事件以在rails中选择标记

如何在此处添加onchange事件?

框架:rails
数据库:MySQL

我正在填充数据库中的选项,这使我使用options_from_collection_for_select

 select_tag(:variable,options_from_collection_for_select(:all, :id, :name)) 

select_tagoptions哈希作为其最终参数,您可以在其中为select添加任何HTML属性。 所以要添加一个onchange属性:

 select_tag :variable, options_from_collection_for_select(:all, :id, :name), :onchange => 'your_onchange_handler()' 

尝试类似的东西:

 :onchange => remote_function(:url => {:controller => 'controller', :action => 'action'}) 

对于select_tag,只需添加:

 {:onchange => "myHandler();" } 

此外,如果onchange不起作用,您可能希望尝试使用大写C的onChange

最后,确保不要使用表单选择来配置select_tag。

请参阅我对类似问题的回答,仅关于表单选择而不是select_tag

将Onchange事件添加到表单选择

您可能希望内联添加onchange属性:

 select_tag(:variable,options_from_collection_for_select(:all, :id, :name)), {:onchange => "(function(e){ e.target.value }).apply(this,arguments)"} 

对于我的情况,我不知道在哪里放置命名函数,或者有时我觉得创建一个函数只是为了创建一个简单的标记很繁琐。 所以人们倾向于编写内联函数。

但像{onchange: "e.target.value"}类的简单行将无效,因为没有定义变量(例如event )。

解决方案是一个接受参数的自执行函数