【发布时间】:2015-08-25 20:54:57
【问题描述】:
我正在使用带有 jquery-rails (3.1.0) 和 jquery-ui-rails (4.1.1) gem 的 Rails 4.0.2。我添加了自动完成功能,以便根据用户输入的内容和表单中的其他字段进行特定搜索。
形式:
<%= text_field_tag :field , some_value, data: { autocomplete_source: select_path( { :id => @order.Id , :type => @order.type } ) } %>
Form.js:
$('#field').autocomplete
minLength: 0
source: $('#field').attr('data-autocomplete-source')
select: ( event, ui ) ->
$('#pedido_venda_CodTransp').val(ui.item.value)
$('#transportadora_escolhido').val(ui.item.label)
this.form.submit()
false
...
控制器:
def select
# retrieve parameters
id_cliente = params[:id]
retira_entrega = params[:type]
term = params[:term]
# do the query, etc...
end
当我运行代码时,一切正常。控制器接收所有参数并完美运行查询。 然而,type 参数是基于 SELECT 控件的,为了更改它,我将以下代码放入 SELECT 控件中。
<%= f.select :type, options_for_select( [['RETIRA','R'],['ENTREGA','E']] , @pedido.RetiraEntrega ) ,{}, { :onchange => "change_type();" } %>
JS代码功能:
function change_type()
{
var e = document.getElementById("type");
var option = e.options[ e.selectedIndex ].value;
var field = document.getElementById("field");
var origem = "type=";
source = field.attributes["data-autocomplete-source"].value;
// pesquisa a string retira_entrega=
index = source.search(origem);
field.setAttribute("data-autocomplete-source", source.substring(0,index+origem.length) + String(option));
}
调用JS函数,运行最后一行,设置属性(我在检索属性的末尾放了一个警报)。 问题是控制器永远不会收到更改的值(它总是在创建表单时收到值)。
所以,问题是:如何更改传递给自动完成的参数以便在 Rails 控制器中使用它?
【问题讨论】:
标签: ruby-on-rails jquery-autocomplete