stackoverflow中的所有其他解决方案似乎对我不起作用,所以我发布了我的代码以获得帮助。我想通过jquery输出变量:@less_per_unit
这是我在_form.html.erb中的标记:
<script>
$(document).on('keyup', ".input-quantity", function(){
$.ajax({
url: "/so_check_increment",
type: "GET",
data: { quantity: $(this).val(), product_id: $(this).closest('tr').find('.input-product_code').val()}
});
$(this).closest('td').next('td').find('.increment').text('<%== j @less_per_unit%>');
});
</script>
这是我的控制器:
def check_increment
@less_per_unit = "testing"
end
我知道ajax有效,我也设置了路线。如果我尝试使用binding.pry,我知道rails可以找到@less_per_unit,但我不能用javascript输出它。
答案 0 :(得分:1)
这不起作用,因为:
让我们说这个表单是在控制器'Post'的动作'new'中呈现的,然后@less_per_unit
需要在那里初始化,以便在你正在使用的那个动作的视图文件中使用它。当您使用AJAX调用时以及在调用期间,您正在定义一个实例变量,该变量肯定不会被已呈现的html文件访问。
因此,您需要从check_increment操作返回JSON数据,并在AJAX调用响应中接收该数据,然后使用它。