我在这里做了一些愚蠢的错事,但我不知道它是什么。
在我看来,我有以下代码:
- if current_page?(edit_blog_path)
我用它来显示页面中的某些页面特定功能。
这会导致以下错误:
ActionController::RoutingError - No route matches {:action=>"edit", :controller=>"blogs"}:
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:540:in `raise_routing_error'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:536:in `rescue in generate'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:528:in `generate'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:569:in `generate'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:594:in `url_for'
actionpack (3.2.16) lib/action_dispatch/routing/url_for.rb:148:in `url_for'
actionpack (3.2.16) lib/action_view/helpers/url_helper.rb:107:in `url_for'
我的佣金路线说:
% rake routes | grep blog
blogs GET /blogs(.:format) blogs#index
POST /blogs(.:format) blogs#create
new_blog GET /blogs/new(.:format) blogs#new
edit_blog GET /blogs/:id/edit(.:format) blogs#edit
blog GET /blogs/:id(.:format) blogs#show
PUT /blogs/:id(.:format) blogs#update
DELETE /blogs/:id(.:format) blogs#destroy
blogs_new POST /blogs/new(.:format) blogs#new
GET /blogs/:id/next(.:format) blogs#next
GET /blogs/:id/previous(.:format) blogs#previous
user_root GET /blog/root(.:format) blogs#root
任何线索?
感谢。
答案 0 :(得分:4)
edit_blog_path
需要博客作为参数。
edit_blog_path(@blog)
。
如果你只是想检查一下,无论你是否在edit_blog页面,而不关心正在编辑哪个博客,你可以做这样的事情。
if controller_name == 'blogs' && action_name == 'edit'
如果您只想区分新表单和编辑表单,也可以
if @blog.persisted?
# existing blog
答案 1 :(得分:1)
你需要传递id
之类的
if current_page?(edit_blog_path(id: @blog.id))
或传递整个博客对象
if current_page?(edit_blog_path(@blog))
答案 2 :(得分:0)
我说路由助手edit_blog_path需要一个id。也许edit_blog_path(@blog)可能有效(或用你在那里的变量替换@blog)?