"No routes matches" when using current_page in Rails 3
Has anybody experienced routes mysteriously becoming undetectable when using current_page? in Rails 3? Even with a fully generated scaffold complete with routes, a view, and a controller, I am getting a "开发者_如何学JAVANo route matches" error.
Here's the code:
if current_page?(:controller => 'users', :action => "show")
If I add a "match" command to routes.rb, it works fine, but why would I need to do that if the resources have already been created? What am I missing?
If you just want to test the current controller, you can do the following:
if params[:controller] == 'users'
Similarly, if you're using a namespaced controller, you can just use a slash to separate the namespace(s) from the controller name, e.g.:
if params[:controller] == 'advertising/users'
You're missing the id
parameter from this helper:
current_page?(:controller => "users", :action => "show", :id => "1")
It expects you to pass a full route through. If you don't want this and only want to match on the controller and action then I would recommend coding your own.
Depending on your routes, to look for a generic show
action without ID you could look for e.g. !current_page?(:controller => "users", :action => "index")
.
精彩评论