link_to(:controller =>“something”)helper + Devise无法正常工作

时间:2011-01-26 09:20:15

标签: ruby-on-rails-3 url-routing helpers

一切! 也许有人知道为什么:

def index_link(object, content = t("#{object.to_s.pluralize}.index"))
  #link_to(content, {:controller=>object.to_s.pluralize}, :scope=>"") if can?(:read, p(object)) #this doesn't work too
  link_to(content, :controller=>"trademarks")
  #link_to(content, trademarks_path) #this do work, but I need to set path from object
end

像这样做一个例外:

No route matches {:controller=>"devise/trademarks"}

堆栈:

actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:424:in `raise_routing_error'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:406:in `generate'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:453:in `generate'
actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:481:in `url_for'
actionpack (3.0.3) lib/action_dispatch/routing/url_for.rb:131:in `url_for'
actionpack (3.0.3) lib/action_view/helpers/url_helper.rb:99:in `url_for'
actionpack (3.0.3) lib/action_view/helpers/url_helper.rb:236:in `link_to'
app/helpers/application_helper.rb:53:in `index_link'
app/views/layouts/application.html.erb:20:in `_app_views_layouts_application_html_erb___741328535__615736668_0'
actionpack (3.0.3) lib/action_view/template.rb:135:in `send'
actionpack (3.0.3) lib/action_view/template.rb:135:in `render'

以及如何使其发挥作用?

2 个答案:

答案 0 :(得分:9)

您必须在路径中添加斜杠。 例如:

<li><%= link_to "Events" , :controller => "/events", :action => "index" %></li>

来源: https://github.com/plataformatec/devise/issues/471#issue/471/comment/395243

答案 1 :(得分:1)

这是rake路线的一部分:

      new_user_session GET    /users/login(.:format)         {:controller=>"devise/sessions", :action=>"new"}
          user_session POST   /users/login(.:format)         {:controller=>"devise/sessions", :action=>"create"}
  destroy_user_session GET    /users/logout(.:format)        {:controller=>"devise/sessions", :action=>"destroy"}
         user_password POST   /users/password(.:format)      {:controller=>"devise/passwords", :action=>"create"}
     new_user_password GET    /users/password/new(.:format)  {:controller=>"devise/passwords", :action=>"new"}
    edit_user_password GET    /users/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"}
                       PUT    /users/password(.:format)      {:controller=>"devise/passwords", :action=>"update"}
     user_registration POST   /users(.:format)               {:controller=>"devise/registrations", :action=>"create"}
 new_user_registration GET    /users/register(.:format)      {:controller=>"devise/registrations", :action=>"new"}
edit_user_registration GET    /users/edit(.:format)          {:controller=>"devise/registrations", :action=>"edit"}
                       PUT    /users(.:format)               {:controller=>"devise/registrations", :action=>"update"}
                       DELETE /users(.:format)               {:controller=>"devise/registrations", :action=>"destroy"}
                       GET    /content/:id-:alias(.:format)  {:controller=>"contents", :action=>"show", :id=>/\d+/}
              contents GET    /content(.:format)             {:controller=>"contents", :action=>"index"}
                       POST   /content(.:format)             {:controller=>"contents", :action=>"create"}
           new_content GET    /content/new(.:format)         {:controller=>"contents", :action=>"new"}
          edit_content GET    /content/:id/edit(.:format)    {:controller=>"contents", :action=>"edit"}
               content GET    /content/:id(.:format)         {:controller=>"contents", :action=>"show"}
                       PUT    /content/:id(.:format)         {:controller=>"contents", :action=>"update"}
                       DELETE /content/:id(.:format)         {:controller=>"contents", :action=>"destroy"}
            trademarks GET    /trademarks(.:format)          {:controller=>"trademarks", :action=>"index"}
                       POST   /trademarks(.:format)          {:controller=>"trademarks", :action=>"create"}
         new_trademark GET    /trademarks/new(.:format)      {:controller=>"trademarks", :action=>"new"}
        edit_trademark GET    /trademarks/:id/edit(.:format) {:controller=>"trademarks", :action=>"edit"}
             trademark GET    /trademarks/:id(.:format)      {:controller=>"trademarks", :action=>"show"}
                       PUT    /trademarks/:id(.:format)      {:controller=>"trademarks", :action=>"update"}
                       DELETE /trademarks/:id(.:format)      {:controller=>"trademarks", :action=>"destroy"}

请求的页面是/ users / edit。该错误仅在设计控制器中发生。