我有一个rails应用程序作为后端,一个BackboneJS应用程序作为前端。 BackboneJS应用程序以rails服务器启动。现在,我有一个搜索引擎索引我的应用程序页面的问题,我试图用phantomjs [我用户this gem]解决。我在应用程序控制器中编写了一个before_filter,如下所示:
def phantom_response
if params["_escaped_fragment_"].present?
url = "#{request.base_url}/#!#{params["_escaped_fragment_"]}"
output = Phantomjs.run('/lib/assets/get_page.js', url)
render :text => output
end
end
我的get_page.js看起来像这样:
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36';
page.settings.localToRemoteUrlAccessEnabled = true;
page.open(phantom.args[0], function (d) {
var body = page.evaluate(function(s) {
return document.querySelector(s).innerText;
}, '#provider_details_tpl');
console.log(body);
phantom.exit();
});
带有“provider_details_tpl”的元素包含一个把手模板。
但是phantomjs只返回我的模板而没有预编译。你能救我吗?