Rails AJAX:当用户在浏览器栏中键入URL时执行js.erb文件

时间:2014-08-25 16:18:30

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

我的问题如下:我有一个rails应用程序,其中所有链接都是:remote => true。因此所有内容都加载了AJAX,而一些页面元素只加载一次。因此,指向articles#index的链接将通过articles.js.erb执行某些功能,并呈现内容。这是articles.js.erb的一个例子:

centerMiddleMenu();
$("#content-container").html('<%= j(render("articles"))%>');
setStudioContentWidth();
setContentWidth();

pageurl = "/thestudio/articles";

if(pageurl!=window.location){
  window.history.pushState({path:pageurl},'',pageurl);
}

这里会发生什么:我根据可用内容设置某些元素的宽度,并将URL更改为显示:domain.com/articles。但问题是,当用户直接键入URL(domain.com/articles)时,上述功能似乎不会执行。这是一个问题,因为如果有人共享一个链接而另一个人访问它,那么该网站看起来并不好看,因为内容的宽度没有正确设置。

我想知道即使有人在浏览器中键入URL,我是否可以使用article.js.erb。任何帮助将不胜感激!如果不清楚,请告诉我,英语不是我的母语;)

1 个答案:

答案 0 :(得分:0)

对于控制器上的每个动作调用,都有可接受的类型集...例如..refer respond_to

html调用(在浏览器中输入网址) - 使用index.html.erb

js致电(ajax致电/提交) - 使用index.js.erb

json调用(使用tokeninput或其他js获取) - 使用format.json { render json: @users}

=================== - 处理所有====================

respond_to do |format|
  format.html
  format.js {"show"}
  format.json { render json: @users }
  format.xml @users.to_xml
end