我正在尝试测试包含一些I18n的现有应用
这是我的测试:
require "spec_helper"
require "rails_helper"
describe "visiting landing page" do
it "should display the welcome text" do
visit root_path
expect(page).to have_text("TUTOS DUCLOS")
end
end
我有以下错误:
Failures:
1) visiting landing page should display the welcome text
Failure/Error: visit root_path
ActionController::UrlGenerationError:
No route matches {:action=>"landing", :controller=>"home"} missing required keys: [:locale]
# ./spec/features/home_spec.rb:8:in `block (2 levels) in <top (required)>'
Finished in 0.00127 seconds (files took 1.89 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/features/home_spec.rb:7 # visiting landing page should display the welcome text
如果我更改了root_path
"en"
的测试通过...但我不确定这样做是否正确...
有传统的轨道吗?
感谢
以下是我的路线:
Rails.application.routes.draw do
scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
get "/best_voted", to: "tutos#best_voted"
resources :tutos
namespace :users do
resources :tutos
end
resources :tutos, only: [:show]
resources :tutos do
member do
put "like", to: "tutos#upvote"
end
end
as :user do
get "/register", to: "devise/registrations#new", as: :register
get "/login", to: "devise/sessions#new", as: :login
get "/logout", to: "devise/sessions#destroy", as: :logout
get "/account", to: "users#show", as: :account
get "/login" , to: "devise/sessions#new", as: :new_user_session
post "/login" , to: "devise/sessions#create", as: :user_session
delete "/logout" , to: "devise/sessions#destroy", as: :destroy_user_session
end
devise_for :users, skip: [:sessions]
resources :users
root "home#landing"
end
get '*path', to: redirect("/#{I18n.default_locale}/%{path}")
get '', to: redirect("/#{I18n.default_locale}")
end
答案 0 :(得分:0)
您可以将路由选择声明为路由中的可选参数:
String json = "[{\"field_type\":\"descriptive\"},"
+ "{\"field_type\":\"test1\"},"
+ "{\"field_type\":\"descriptive\"}"
+ "{\"field_type\":\"test2\"}"
+ "]";
HashSet<JSONArray> arrayStore = new HashSet<JSONArray>();
JSONArray store = new JSONArray();
JSONArray arr = new JSONArray(json);
for(int i =0; i < arr.length(); i++){
JSONObject obj = arr.getJSONObject(i);
if("descriptive".equals(obj.getString("field_type"))){
store = new JSONArray(); // create a new array for each section...
arrayStore.add(store); //store the current object
} else {
store.put(obj); //store the object in the array
}
}
# config/routes.rb
scope "(:locale)", locale: /en|fr/ do
resources :books
end