【问题标题】:How to call a controller function from a view, then reload the same page?如何从视图调用控制器函数,然后重新加载同一页面?
【发布时间】:2013-10-25 19:27:50
【问题描述】:

我想在我的显示页面上有一个链接,它将调用控制器上的一个函数,然后重新加载显示页面。

我正在使用 SNMP gem,该功能将在特定交换机接口上切换管理上/下设置。

我需要将当前的@node 和一个接口索引号传递给我的节点控制器上的函数“toggleAdmin”。然后 toggleAdmin 将运行 SNMP gem 命令来检查指定接口的当前状态,并将其设置为相反。运行完成后,会再次渲染“show”。

我试过了:

<% link_to "ToggleAdmin", :controller=>:nodes, :action=>:toggleAdmin %>

但我明白了:

No route matches {:controller=>"nodes", :action=>"toggleAdmin"}

我会为此在路由文件中添加什么,以及如何从视图中添加其他参数以便将它们传递给 toggleAdmin 函数?

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    在路线中你可以有这个:

     get 'nodes/toggle_admin'
    

    那么你的link_to 应该可以工作了

    <% link_to "ToggleAdmin", nodes_toggle_admin_path(:some_param => :value) %>
    

    是的,“toggleAdmin”不符合命名约定。应该是“toggle_admin”

    【讨论】:

    • 我需要在路线条目中添加“匹配”部分,还是只需要您在自己的行中发布的内容?
    • 那条线是匹配的糖。
    • 你摇滚。非常感谢。
    • &lt;% link_to "ToggleAdmin", :controller=&gt;:nodes, :action=&gt;:toggleAdmin, :node=&gt;@theNode, :intIndex=&gt;int[:intIndex], :intStatus=&gt;int[:ifAdminStatus] %&gt; 是我的链接,但是当我点击链接时,我得到一个 WEBrick RequestURITooLarge 错误。
    • 好吧,不要将整个@node 推送到请求中,它有什么好处?只推送它的 id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多