我有这样的路线:
map.namespace 'prepayments', :path_prefix => '/:locale/prepayments' do |prepayment|
prepayment.root :controller => 'login', :namespace => 'prepayments'
...
end
map.redirect '/', :controller => 'prepayments/login' # this is not working
# I tried also
map.root :controller => 'prepayments/login'
我想得到的是,在输入:www.example.com 后,它会将我重定向到 www.example.com/en/prepayments。
早些时候,当我map.root
从上面的示例中使用它时,它只停留在 www.example.com 并呈现正确的视图(但它没有:locale
并且效果很好),后来我添加:locale
到我的路线中,从这个时候我的视图(使用某种形式)没有不能正常工作。我收到错误,它找不到表单的相应路线 - 这是正确的,因为我没有通过任何:locale
.
那么,如何将root重定向到另一个页面呢?它可能需要生成正确的路径并通过 http 302 传递它。或者/以及如何制作类似:
map.root :controller => 'prepayments/login', :my_locale => 'en'
编辑:我的 rake 路线如下所示:
prepayments_root /:locale/prepayments {:controller=>"prepayments/login", :action=>"index"}
prepayments_create /:locale/prepayments/send_email {:method=>:post, :controller=>"prepayments/login", :action=>"send_email"}
prepayments_home /:locale/prepayments/home {:controller=>"prepayments/prepayments", :action=>"home"}
prepayments_save /:locale/prepayments/save {:controller=>"prepayments/prepayments", :action=>"save"}
prepayments_agree /:locale/prepayments/agree {:controller=>"prepayments/prepayments", :action=>"agree"}
prepayments_disagree /:locale/prepayments/disagree {:controller=>"prepayments/login", :action=>"logout"}
prepayments_payment /:locale/prepayments/payment {:controller=>"prepayments/prepayments", :action=>"payment"}
prepayments_payment_email /:locale/prepayments/payment_email {:controller=>"prepayments/prepayments", :action=>"payment_email"}
/:locale/prepayments/:uid {:controller=>"prepayments/login", :action=>"verify"}
redirect / {:controller=>"prepayments/login", :action=>"index"}
编辑:
我尝试按照 Garrett 提议的方式进行操作,并且奏效了。我改变了路线:
map.redirect '/', :controller => 'prepayments/login', :action => 'welcome'
并在控制器中添加了欢迎方法:
def welcome
redirect_to prepayments_root_path(:locale => 'en')
end
它可以按我的意愿工作(因此它会更改浏览器中的 url)。
另一种方法是像这样更改路线:
map.root :controller => 'prepayments/login', :locale => 'en'
它也有效,但它没有重定向(它不会更改浏览器中的 url)。我不确定是否有这样的选项map.redirect
。我在 www 的示例中找到了它,但我也找到了添加此类功能的插件。
感谢帮助!