0

アプリでのルーティングに問題がありますが、その理由がわかりません。なぜそうなのか、誰かが私に説明してくれることを願っています。

助けてくれてどうもありがとう。

<%= link_to 'Show', restaurant_path(restaurant), :id => 'button_show_restaurant', :class => 'btn btn-success' %> 

<%= button_to 'Show', restaurant_path(restaurant), :id => 'button_show_restaurant', :class => 'btn btn-success' %>

link_to コードは必要なレストランに正しくルーティングされますが、button_to は次の結果を生成します。

一致するルートはありません [POST] "/de/restaurants/526fe01e65617271ea000000" Trace: actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:21:in call' actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.0.0) lib/rails/rack/logger .rb:38:call_app' railties (4.0.0) lib/rails/rack/logger.rb:21:in呼び出し中のブロック' activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:block in tagged' activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:inタグ付きのアクティブサポート (4.0.0) lib/active_support/tagged_logging.rb:67:tagged' railties (4.0.0) lib/rails/rack/logger.rb:21:in呼び出し中のアクションパック ( 4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:incall' ラック (1.5.2) lib/rack/runtime.rb:17:in call' activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:incall' ラック (1.5.2) lib/rack/lock. rb:17:in call' actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:incall' railties (4.0.0) lib/rails/engine.rb:511:in call' railties (4.0.0) lib/rails/application.rb:97:incall' パッセンジャー (4.0.21) lib/phusion_passenger/rack/thread_handler_extension.rb:77:inprocess_request' passenger (4.0.21) lib/phusion_passenger/request_handler/thread_handler.rb:140:in「accept_and_process_next_request」パッセンジャー (4.0.21) lib/phusion_passenger/request_handler/thread_handler.rb:108:inmain_loop' passenger (4.0.21) lib/phusion_passenger/request_handler.rb:441:inブロック (3 レベル) in start_threads'

ルート

ルートは上から順に優先度が一致します

ヘルパー HTTP Verb パス Controller#Action パス / URL
Welcome_index_path GET (/:locale)/welcome(.:format) welcome#index POST (/:locale)/welcome(.:format) welcome#create new_welcome_path GET (/:locale)/welcome/new(.:format) welcome #new edit_welcome_path GET (/:locale)/welcome/:id/edit(.:format)welcome#editwelcome_path GET (/:locale)/welcome/:id(.:format)welcome#show PATCH (/:locale) /welcome/:id(.:format) ようこそ#update PUT (/:locale)/welcome/:id(.:format) ようこそ#update DELETE (/:locale)/welcome/:id(.:format) ようこそ# destroy restaurant_path GET (/:locale)/restaurants(.:format) restaurant#index POST (/:locale)/restaurants(.:format) restaurant#create new_restaurant_path GET (/:locale)/restaurants/new(.:format) restaurant#new edit_restaurant_path GET (/:locale)/restaurants/:id/edit(.:format) restaurant#edit restaurant_path GET (/:locale)/restaurants/:id(.:format) restaurant#show PATCH (/:locale)/restaurants/:id(.:format) restaurant#update PUT (/:locale) /restaurants/:id(.:format) restaurant#update DELETE (/:locale)/restaurants/:id(.:format) restaurant#destroy root_path GET / Welcome#index

4

1 に答える 1

2

デフォルトでbutton_toは、get を実行しながら post をlink_to実行します。だからあなたはこれが欲しい

<%= button_to 'Show', restaurant_path(restaurant), :id => 'button_show_restaurant', :class => 'btn btn-success', :method => :get %>
于 2013-10-29T16:56:20.403 に答える