2013-01-05 146 views
0

我不能调用使用的link_to在控制器的动作。不匹配路由

我在我的routes.rb文件保留控制器定义的路由(详见下文),我想访问在“我的/预订”控制器“create_commercial”行动。

所以,如果我使用rake routes | grep 'reservation'

      visitor_my_reservations GET (/:locale)/my/reservations/visitor(.:format)        {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"visitor"} 
      create_commercial_my_reservations POST (/:locale)/my/reservations/create_commercial(.:format)      {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"create_commercial"} 
         confirm_my_reservation PUT (/:locale)/my/reservations/:id/confirm(.:format)       {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"confirm"} 
          pay_my_reservation GET (/:locale)/my/reservations/:id/pay(.:format)        {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"pay"} 
       payment_success_my_reservation GET (/:locale)/my/reservations/:id/payment_success(.:format)     {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"payment_success"} 
       payment_cancel_my_reservation GET (/:locale)/my/reservations/:id/payment_cancel(.:format)     {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"payment_cancel"} 
          my_reservations POST (/:locale)/my/reservations(.:format)          {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"create"} 
          new_my_reservation GET (/:locale)/my/reservations/new(.:format)         {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"new"} 
         edit_my_reservation GET (/:locale)/my/reservations/:id/edit(.:format)        {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"edit"} 
           my_reservation GET (/:locale)/my/reservations/:id(.:format)         {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"show"} 
              PUT (/:locale)/my/reservations/:id(.:format)         {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"update"} 
              DELETE (/:locale)/my/reservations/:id(.:format)         {:locale=>/en|en-US|en-GB/, :controller=>"my/reservations", :action=>"destroy"} 
        show_test_my_reservations GET /test/my/reservations/show(.:format)          {:controller=>"test/my/reservations", :action=>"show"} 
        new_test_my_reservation GET /test/my/reservations/new(.:format)          {:controller=>"test/my/reservations", :action=>"new"} 

绘制的路线,所以我再尝试: -

<td><%= link_to 'book', create_commercial_my_reservations_path %></td> 

我也试试这个: -

<%= link_to('Book', {:controller => 'my/reservations', :action => 'create_commercial', :method => :post}) %> 

,我在看两个选项的控制台窗口: -

Started GET "/en-GB/my/reservations/create_commercial" for 127.0.0.1 at Sat Jan 05 18:29:30 +0000 2013 
    Processing by My::ReservationsController#show as HTML 
    Parameters: {"id"=>"create_commercial", "locale"=>"en-GB"} 
Geokit is using the domain: localhost 

的URL是正确的,但行动“秀”被调用,而方法是“得到”,而不是“后”。

是否有人有任何想法我可能是做错了什么......指导非常赞赏。

回答

1

的Try ...

<%= link_to 'book', create_commercial_my_reservations_path, :method => :post %> 

有了,它似乎有点奇怪被链接到#创建行动,而不是#NEW行动的警告,但我不知道你的应用程序...

+0

同样的事情,我害怕。我会再看看为什么我要链接到创建操作!干杯 – user1951582