我正在研究Rails 3.1应用程序,我想为应用程序支持的不同语言设置特定路由.
/es/countries
/de/countries
…
Run Code Online (Sandbox Code Playgroud)
对于默认语言('en'),我不希望语言环境显示在URL中.
/countries
Run Code Online (Sandbox Code Playgroud)
这是我设定的路线定义.
scope "(:locale)", :locale => /es|de/ do
resources :countries
end
Run Code Online (Sandbox Code Playgroud)
它很好用,直到我尝试使用带有'en'的路径助手作为语言环境.
在控制台中:
app.countries_path(:locale => 'fr')
=> "/fr/countries"
app.countries_path(:locale => 'en')
=> "/countries?locale=en"
Run Code Online (Sandbox Code Playgroud)
我不想要"?locale = en".
有没有办法告诉rails使用'en'语言环境,不应该将语言环境参数添加到url?
谢谢
我创建了一个小型的Rails应用程序,用恶作剧和Capybara对我的一个网站的内容进行了核心检查.在我的Mac上,dev中的一切都很好用.但是当我在生产服务器上测试时,我得到了以下服务器.
Capybara :: Poltergeist :: PhantomJSFailed(PhantomJS返回非零退出状态127.确保phantomjs在您的系统上成功运行.您可以通过运行phantomjs应该为您提供Javascript REPL 的命令来测试它.):
Phantomjs的作品.我从命令行测试过它.更令我困惑的是,当我从生产服务器上的rails控制台运行我的方法时,它也可以工作.
任何的想法?
我正在尝试将ui-select包装在自定义指令中.(https://github.com/angular-ui/ui-select)
this.adminv2.directive('eventSelect', function() {
return {
restrict: 'E',
replace: true,
scope: {
ngModel: '=',
placeholder: '='
},
controller: function($scope, $http) {
return $scope.refreshEvents = function(searchTerm) {
return $http.get('/events/autocomplete', {
params: {
term: searchTerm
}
}).then(function(response) {
return $scope.events = response.data;
});
};
},
template: "<div>{{ngModel}}\n <ui-select ng-model=\"ngModel\"\n theme=\"bootstrap\"\n ng-disabled=\"disabled\"\n reset-search-input=\"false\">\n <ui-select-match placeholder=\"Enter an event\">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=\"event in events track by $index\"\n refresh=\"refreshEvents($select.search)\"\n refresh-delay=\"0\">\n <span ng-bind-html=\"event.name | highlight: $select.search\"></span>\n <i class=\"icon-uniF111 fg type-{{raceType}} pull-right\" ng-repeat='raceType in event.racetypes'></i>\n <br>\n {{event.dates}} …Run Code Online (Sandbox Code Playgroud) 我试图用'(引用)替换\"(反斜杠双引号)使用sed.
sed "s/\\\"/\'/g" file.txt
Run Code Online (Sandbox Code Playgroud)
该命令无法按预期工作.它取代了所有"在文本文件中,而不仅仅是".
它与sed"s/\"/ \'/ g"file.txt完全相同
我正在使用Mac OS X Leopard.
有人有线索吗?
我要将文件从外部源导入到postgresql表中.我尝试使用\ copy from,但我不断在文件中间收到错误(附加列).
有没有办法告诉postgresql在"\ copy from"期间忽略包含错误的行?
谢谢
我在表中有一个tsvector列,我希望能够从tsvector中删除一个lexeme.
我开始玩ts_stat来重建一个新的tsvector,但它看起来很复杂.
有一个简单的方法吗?
我正在将rails 2.3应用程序迁移到rails 3.2.我有一个对象用于管理我从不同来源收集的一些统计数据的缓存.由于收集过程很长,传统的片段缓存无法完成.我不得不异步填充缓存.AsynchCache对象,从Google Analytics获取数据并将部分内容存储在缓存中.
include Rails.application.routes.url_helpers
class AsynchCache
def self.get_popular_races_from_google_analytics(lang='en')
# getting info form GA using Garb.
end
def self.set_popular_races(language=nil)
av = ActionView::Base.new(Rails.configuration.paths['app/views'])
language_list = Global.instance.languages_UI.map{|a| a[0]}
for lang in language.nil? ? language_list : [language]
output = av.render(
:partial => "home/popular_races",
:locals => {:lang => lang}
)
Rails.cache.delete("popular_races_#{lang}")
Rails.cache.write("popular_races_#{lang}",output)
end
end
def self.get_popular_races(lang='en')
Rails.cache.read("popular_races_#{lang}")
end
end
Run Code Online (Sandbox Code Playgroud)
我用于显示的部分如下
当我想显示内容时,我只需要使用:
<div id="popular_races"> <%# AsynchCache.get_popular_races(params[:locale])-%> </div>
Run Code Online (Sandbox Code Playgroud)
它在我第一次加载页面时工作正常,或者在irb中工作正常,但如果我尝试重新加载页面或在development.rb中设置config.cache_classes = true,我会收到错误:
stack level too deep
Rails.root: /Users/macbook/Sites/marathons
Application Trace | Framework …Run Code Online (Sandbox Code Playgroud) postgresql ×2
angularjs ×1
macos ×1
model ×1
phantomjs ×1
poltergeist ×1
regex ×1
routing ×1
sed ×1
tsvector ×1
unix ×1
url-routing ×1