我有一个网址http://localhost:3000/features?feature_group=everyone
,我正在尝试通过路由制作网址http://localhost:3000/features/for-everyone
。
答案 0 :(得分:2)
您可以将所需的路线定义为
get '/features/:feature_group' => 'features#index'
因此,在行动中,params [:feature_group]将在您的案例中具有“分析”
或者您可以使用收集路线,例如
resources :features do
collection do
get :feature_group
end
end
因此,您需要在功能控制器中执行feature_group操作。要了解rails路由,请参阅http://guides.rubyonrails.org/routing.html
答案 1 :(得分:0)
就我个人而言,我会使用您的索引控制器的初始feature
路由,并使用集合在其中执行嵌套路由,例如:
resources :features do
collection do
get :feature_group
get :feature_xxxxx
end
end
什么是酷的,如果params [:feature_group]为零,你可以在你的控制器中做什么?还是在场?或等于“某些单词”使您的索引页面具有不同的记录,或者取决于您想要做什么。
答案 2 :(得分:0)
好的,我可以在constraints
的帮助下完成get 'features' => redirect('/features/for-everyone'), :constraints => lambda{|req| req.params["feature_group"] == "everyone"}
get 'features/for-everyone' => "Features#index"
但是在过程中params [“feature_group”]迷路了。所以我需要使用默认值
传递路径中的参数get 'features/for-everyone' => "Featues#index", :defaults => { :feature_group => "everyone" }
答案 3 :(得分:0)
试试这个
get 'features' => redirect('/features/for-everyone?%{params}'), :constraints => lambda{|req| req.params["feature_group"] == "everyone"}
或
redirect('/features/for-everyone?feature_group=%{feature_group}'), :constraints => lambda{|req| req.params["feature_group"] == "everyone"}
我测试了这个场景及其工作正常。