使用视图中的按钮触发操作时出错
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'
它就起作用了,因为现在它的顺序更高了。
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'
它就起作用了,因为现在它的顺序更高了。