我正在尝试在下拉列表中更改时呈现部分。有一个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 } ) %>");
发布于 2018-07-07 04:33:31
您需要通过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>
https://stackoverflow.com/questions/51217107
复制相似问题