通过JavaScript函数调用时未渲染Rails部分

时间:2018-07-06 20:19:46

标签: javascript ruby-on-rails

我正在尝试在下拉列表中进行更改后呈现部分内容。 有onchange javascript函数,该函数可指向链接以显示相应的表单。

但是在这里,我在控制器的get_template方法中遇到了#<ActionController::UnknownFormat: ActionController::UnknownFormat>错误。

我认为这与通过javascript调用链接有关,因为请求被处理为HTML。

Processing by XYZController#get_template as HTML

如何将其作为JS处理?

这是详细的代码。

dropdown.html.erb

<div id="requests_dropdown">
Choose the type of request : <%= select_tag 'drop_request_id', options_for_select(@request_types.map{|x| [x[:name], x[:id]] } ) %>
</div>

JavaScript

<script>

$('#drop_request_id').on('change', function() { 
  var request_type_id = $('#drop_request_id').val();
  var href =  'get_template/' + request_type_id ;
  window.location = href;
});
</script>

控制器

   def get_template

    @request_type = [x,y,z] 
    respond_to do |format|
            format.js
    end
end

get_template.js.erb

$("#request_form_partial").html("<%= escape_javascript(render partial: 'request_form', locals: {  request_type: @request_type } ) %>"); 

1 个答案:

答案 0 :(得分:1)

您需要通过ajax调用您的方法。 由于尝试获取html格式而获取错误,而您的方法呈现js格式响应。

请将代码修改为以下内容:

     <script> $('#drop_request_id').on('change', function() { 
var request_type_id = $('#drop_request_id').val(); 
var href = 'get_template.js/' + request_type_id ; 
$.get(href);
}); 
</script>