无法访问Javascript标记内的Rails变量

时间:2017-11-12 18:50:01

标签: javascript jquery ruby-on-rails ajax

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输出它。

1 个答案:

答案 0 :(得分:1)

这不起作用,因为:

让我们说这个表单是在控制器'Post'的动作'new'中呈现的,然后@less_per_unit需要在那里初始化,以便在你正在使用的那个动作的视图文件中使用它。当您使用AJAX调用时以及在调用期间,您正在定义一个实例变量,该变量肯定不会被已呈现的html文件访问。

因此,您需要从check_increment操作返回JSON数据,并在AJAX调用响应中接收该数据,然后使用它。