【问题标题】:using both :url and :function on observe_form在 observe_form 上同时使用 :url 和 :function
【发布时间】:2009-07-29 23:50:45
【问题描述】:
有没有办法在同一个 observe_form 标记中同时生成 Javascript 函数调用和 Ajax 调用?例如,像这样:
<%= observe_form 'user_filter_form', :url => { :action => :process }, :function => :fix_fields %>
谢谢!!
【问题讨论】:
标签:
ruby-on-rails
forms
observer-pattern
【解决方案1】:
您最好的选择是深入研究实际的 JavaScript,而不是依赖帮助程序。帮手只能帮到你。你想要的是这样的东西:
<script type="text/javascript">
new Form.EventObserver('user_filter_form', function(element, value){
fix_fields();
new Ajax.Request("/YOUR_CONTROLLER/process");
}
</script>
但是,如果您真的想依赖 Rails 助手,您可以执行以下操作:
<%= observe_form 'user_filter_form', :function => "fix_fields(); #{remote_function(:url => { :action => :process })}" %>
【解决方案2】:
使用:before 或:after 选项而不是:function,具体取决于您是否希望在Ajax 请求之前或之后调用您的函数。
请参阅link_to_remote helper 的文档,了解可以传递给所有 Ajax 助手的常用选项,例如 observe_form