使用视图中的按钮触发操作时出错

Error using a button in view to trigger action

Rails 5.2

在我的 routes.rb 中,我有以下内容:

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

当我 运行 耙路线时,我得到:

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

在lights_controller.rb中,我有:

def reset_node #TODO 写法 结束

在我看来,我有以下几点:

= 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

您的问题只是为了更深入地解释,routes.rb 中的路由是按顺序读取的。因此,当首先命中具有相同 URL 的路线时,它会沿着该路线前进,并且永远不会在文件中走得更远。因此,请确保文件中的路由顺序正确。

在你的例子中,它被放置在 routes.rb 文件的较高位置,这就是它查看错误路线的原因。

resources :lights

正如您所说,一旦您将它移到另一条路线下方 put 'lights/reset_node', to: 'lights#reset_node' 它就起作用了,因为现在它的顺序更高了。