Ошибка использования кнопки для запуска действия - PullRequest
1 голос
/ 22 октября 2019
Rails 5.2

В моем route.rb у меня есть следующее:

put 'lights/reset_node', to: 'lights#reset_node'

Когда я запускаю рейк-маршруты, я получаю:

lights_reset_node PUT    /lights/reset_node(.:format)  lights#reset_node

В lights_controller.rb яhave:

def reset_node #TODO write метод end

На мой взгляд, у меня есть следующее:

= link_to lights_reset_node_path(:node => @node), :method => :put do
  button.btn.btn-secondary type="button"
    = t('device.show.reset_node_button')

Однако, когда я нажимаю на кнопку, я получаюследующее:

Unknown action
The action 'update' could not be found for LightsController

1 Ответ

1 голос
/ 22 октября 2019

Ваша проблема, просто для более подробного объяснения, заключалась в том, что маршруты внутри маршрутах. Поэтому, когда маршрут с тем же URL-адресом выполняется первым, он идет по этому маршруту и ​​никогда не идет дальше по файлу. Поэтому убедитесь, что ваши маршруты в файле находятся в правильном порядке.

В вашем случае это было выше в файле rout.rb, и именно поэтому он искал неправильный маршрут.

resources :lights

Как вы сказали, когда вы переместили его ниже вашего другого маршрута put 'lights/reset_node', to: 'lights#reset_node', это сработало, потому что теперь это было на порядок выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...