在Rails中,如何在同一个操作中处理Ajax请求和普通HTML请求?

时间:2016-01-27 19:15:38

标签: ruby-on-rails ruby-on-rails-4

我的网站有一个标签格式,我在用户主页中只填充了5个标签中的2个。当用户单击选项卡时,其余选项卡将填充Ajax GET请求。 假设我有一个操作,在选项卡单击

时使用Ajax填充相册选项卡
def show_album
    #code to retrieve album
    respond_to do |format|
        format.js {render :file => "path_offile.js.erb"}
    end
end

在js文件中,我使用jquery选择器在空的tab-content空间中显示部分。

$('#albumtab').html("<%= j (render  :partial => 'profiles/show_my_album' )  %>");

问题在于我想使用history.pushState更改网址到&#34; / show_album&#34;因此,当人们重新加载页面时,他们会留在专辑标签上(有关它在Facebook上的工作方式)。

因此,当用户重新加载页面时,他们会采取相同的操作,但我无法从此处返回js.erb文件,因为没有可以添加部分页面的现有页面。

那么我应该从这个动作返回什么以及如何返回,以便用户可以看到相册页面。我是否需要为正常的http请求创建单独的操作?

1 个答案:

答案 0 :(得分:1)

def show_album
    #code to retrieve album
    respond_to do |format|
        format.js {render :file => "path_offile.js.erb"}
        format.html{ <whatever stuff you want to happen here>}
    end
end