强制Rails在新的Ajax GET请求后重新呈现视图

时间:2014-06-19 21:16:31

标签: ruby-on-rails ruby ajax

这是我相当简单的场景:我有一个基本的MVC设置,在我看来,我有一个下拉列表,它应该允许用户选择要连接的不同数据库。因此,默认情况下,页面加载并且我的控制器建立与默认数据库的连接,将其称为DB_Foo(实际上扩展了ActiveRecord :: Base),并且我的视图使用来自DB_Foo的数据呈现表。它看起来像这样:

class MyController < ApplicationController
  def index
    @db_to_use = params[:db].nil? ? DB_Foo : params[:db]
    # imagine some code to establish_connection
    @table_data = @db_to_use.all
  end
end

然后,在我看来,我可以通过循环@table_data.to_a来呈现数据。

现在,我选择一个不同的数据库,比如从下拉列表中选择DB_Bar,然后我将jQuery.get()调用(Ajax GET的简写)触发到同一个控制器,并将DB_Bar作为参数传入。我可以验证,当这个新请求被路由到我的控制器时,它会看到我传递的DB_Bar参数,并且能够建立与DB_Bar的连接。我已经验证@table_data现在包含来自DB_Bar的新数据,在index方法的末尾。

我想要的基本上是Rails使用相同的控制器重新渲染相同的视图,但是使用来自DB_Bar而不是DB_Foo的不同数据集。但是,在我的浏览器中没有任何更新,对我而言,这意味着我的视图没有呈现(如果确实如此,它将使用@table_data中的新数据,我会看到它)。

这种设计是否非常偏离轨道?我必须在.get()上使用jQuery回调来手动修改HTML元素吗? Rails不应该只使用新数据再次渲染我的页面吗?

0 个答案:

没有答案