Ruby on Rails Route не найден с помощью button_to, но не с помощью link_to
У меня проблема с маршрутизацией в моем приложении, но я не понимаю, почему. Я надеюсь, что кто-то может объяснить мне, почему это так.
Большое спасибо за помощь.
<%= 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/restaurant / 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:in
call '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: in block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in
tagged 'activesupport (4.0.0) lib / active_support / tagged_logging.rb: 67: в tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in
вызов 'actionpack (4.0.0) lib / action_dispatch / middleware / request_id.rb: 21: in call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in
call 'rack (1.5.2) lib / rack / runtime.rb: 17: in call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in
call 'rack (1.5.2) lib / rack / lock.rb: 17: in call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in
call 'railties (4.0.0) lib / rails / engine.rb: 511: in call'
railties (4.0.0) lib/rails/application.rb:97:in
вызовите пассажира (4.0.21) lib / phusion_passenger / rack / thread_handler_extension.rb: 77: in process_request'
passenger (4.0.21) lib/phusion_passenger/request_handler/thread_handler.rb:140:in
accept_and_process_next_request 'passenger (4.0.21) lib / phusion_passenger / request_handler / thread_handler.rb: 108: в main_loop'
passenger (4.0.21) lib/phusion_passenger/request_handler.rb:441:in
блок (3 уровня) в start_threads'
Маршруты
Маршруты совпадают по приоритету сверху вниз
Helper HTTP Verb Path Controller# Путь действия / 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#edit
welcome_path GET (/:locale)/welcome/:id(.:format) welcome#show
PATCH (/:locale)/welcome/:id(.:format) welcome#update
PUT (/:locale)/welcome/:id(.:format) welcome#update
DELETE (/:locale)/welcome/:id(.:format) welcome# уничтожить restaurant_path GET (/:locale)/restaurants(.:format) рестораны #index
POST (/:locale)/restaurants(.:format) restaurant # создать new_restaurant_path GET (/:locale)/restaurants/new(.:format) рестораны #new
edit_restaurant_path GET (/:locale)/restaurants/:id/edit(.:format) рестораны #edit
restaurant_path GET (/:locale)/restaurants/:id(.:format) рестораны #show
PATCH (/:locale)/restaurant /:id(.:format) restaurant #update
PUT (/:locale)/restaurants/:id(.:format) restaurant #update
DELETE (/:locale)/restaurant /: id (.: format) рестораны #destroy
root_path GET / welcome#index
1 ответ
По умолчанию, button_to
делает пост в то время как link_to
делает получить. Итак, вы хотите это
<%= button_to 'Show', restaurant_path(restaurant), :id => 'button_show_restaurant', :class => 'btn btn-success', :method => :get %>