我可以在rails中使用ajax更改实例变量吗?

时间:2016-01-10 00:22:35

标签: javascript ruby-on-rails ajax

我使用ajax从控制器获取对象。

  $('#city').on('change',function(){
    $.ajax({
      url: "/courses/index",
      type: "GET",
      data: {city: $('#city').val() },
      success: function(responseData) {
        alert(responseData);
      }
    });

因此responseData是课程的json格式集合。

目前,我有一个HTML代码:<%= @courses.first.name %>

如何修改@courses实例,其结果是ajax的responseData。

感谢。

2 个答案:

答案 0 :(得分:1)

您无法更改实例变量,因为它属于您正在使用的Ruby类的实例

使用ajax调用各自类的新实例(在服务器上); javascript仅适用于前端视图(HTML code / DOM),因此您必须使用响应填充该内容:

$(document).on('change', '#city', function(){
    $.ajax({
      url: "/courses/index",
      type: "GET",
      data: {city: $('#city').val() },
      success: function(responseData) {
        course = JSON.parse(responseData);
        $(".element").html(course.name);
      }
    });
});

如果不知道您期待哪些数据等,那么很难知道如何“解析”您的数据。但是,需要注意的重要一点是,您应该尝试更改ERB,而是识别html并将其替换为您收到的JSON。

此外,您需要使用类似JSON.parse的东西在您的javascript中创建一个可用的对象(然后您可以使用它来填充您的页面)。

答案 1 :(得分:0)

听起来您想通过Ajax将信息发布回rails应用程序。