我的问题如下:我有一个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
。任何帮助将不胜感激!如果不清楚,请告诉我,英语不是我的母语;)
答案 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