我正在尝试在Ruby on Rails上进行Ajax调用。当我选择2个collection_select时,第三个必须由Ajax呈现。我是Ruby on Rails的新手,所以如果有人能帮助我,我会感激不尽。
_form.html.erb:
<%= form_for(@preco_servico) do |f| %>
<div class="field">
<%= f.label :produto %>
<%= collection_select(:preco_servico, :produto, Produto.order('tipo'), :tipo, :tipo) %>
</div>
<div class="field" >
<%= f.label "Análise" %>
<%= collection_select(:preco_servico, :analise, TipoAnalise.order('tipo'), :tipo, :tipo) %>
</div>
<div class="field" id="parametro-select", :remote >
</div>
...
<% end %>
的application.js:
jQuery(function($) {
$("#preco_servico_analise").change(function() {
var produto_id = $('select#preco_servico_produto :selected').val();
var analise_id = $('select#preco_servico_analise :selected').val();
$.get('/preco_servicos/update_parametro/' + produto_id + '/' + analise_id, function(data){
$("#parametro-select").html(data);
})
return false;
});
})
控制器上的方法:
def update_parametro
@precos = PrecoServico.where(:analise => params[:analise], :produto => params[:produto])
@sub_parametros = []
@precos.each do |preco|
@sub_parametros = Parametro.where("nome NOT IN (?)", preco.parametro)
end
respond_to do |format|
format.js
end
end
我已经在application.html.erb中包含了以下代码:
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
文件update_parametro.js.erb:
sub_parametro <%= collection_select(:preco_servico, :parametro, @sub_parametros, :nome, :nome) %>
在控制台上我得到了这个:
开始GET“/ preco_servicos / update_parametro / produto2 / analise2” 对于127.0.0.1在2014-01-28 23:25:21 -0200处理方式 PrecoServicosController#update_parametro as / 参数: { “preco_servicos”=&gt; “中preco_servicos”, “update_parametro”=&gt;“update_parametro”,“produto”=&gt;“produto2”, “analise”=&gt;“análise2”} PrecoServico负载(0.2ms) SELECT
preco_servicos
。* FROMpreco_servicos
WHEREpreco_servicos
。analise
='análise2'和preco_servicos
。produto
='produto2'渲染preco_servicos / update_parametro.js.erb(0.5ms)8ms完成200 OK(浏览次数:6.0ms | ActiveRecord:0.2ms)
它告诉我它已渲染,但屏幕上没有任何变化,萤火虫中没有任何内容。