ActionController :: UrlGenerationError:没有路由匹配

pwz*_*000 6 ruby-on-rails

我收到了来自该行的无路由匹配错误<%= link_to "Ask User Out", askout_user_message_path(@user), :class => "button" %>.

这曾经在我添加宝石之前工作,但现在它停止了工作.我尝试在收集下移动,但我没有运气,因为那是以前的地方.

路线:

 resources :users do |user|

 resources :messages do
   member do
     post :new
     get 'askout', action: 'askout'
   end
 end
  collection do
     get :trashbin
     post :empty_trash

end
 end

 resources :conversations do
   member do
     post :reply
     post :trash
     post :untrash
   end
 end
Run Code Online (Sandbox Code Playgroud)

旧路线:

 resources :users do |user|

    resources :messages do
      collection do
        post 'delete_multiple'
        get 'askout', action: 'askout'
        get 'reply', action: 'reply'
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

当我添加邮箱gem时,我的路线发生了变化.

Ric*_*eck 6

你最好这样做:

   #config/routes.rb
   resources :users do
     resources :messages do
       member do
         post :new
         get :askout
       end
     end
     collection do
         get :trashbin
         post :empty_trash
      end
   end
Run Code Online (Sandbox Code Playgroud)

这会给你:

users/1/messages/5/askout
Run Code Online (Sandbox Code Playgroud)

我想你想要什么:

   #config/routes.rb
   resources :users do
     resources :messages do
       post :new
       collection do
         get :askout
       end
     end
     collection do
         get :trashbin
         post :empty_trash
      end
   end
Run Code Online (Sandbox Code Playgroud)

这会给你:

users/2/messages/askout
Run Code Online (Sandbox Code Playgroud)

路径助手将在rake routes视图中确定- 您应该查看它以了解您的路由被调用(允许您相应地编写它)