【问题标题】:No route matches [patch] "/happy/node/10003没有路由匹配 [patch] "/happy/node/10003
【发布时间】:2016-10-25 02:28:40
【问题描述】:

路线

put '/happy/node/:node_id', to: 'nodes#happy', as: :happy

节点控制器

def happy 
   @node = Node.find(params[:node_id])
      if @node.update_attributes(:node_status => "happy", 
                                 :location_id => params[:location_id], 
                                 :hostname => params[:hostname])
         redirect_to node_url
      end
end

视图 - 表单

<%= form_for(@node, url: happy_path(@node), method: :patch, do |f| %>
<%= f.label :location_id, "Location" %>
<%= collection_select :location_id, Location.order(:name), :id, :name, :prompt => "Select Location" %>
<%= f.submit "Save Changes" %>

我正在尝试使用自定义操作更新节点表单。当我尝试这个时,它失败了。我将非常感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby forms routes


    【解决方案1】:

    在你的路由中你使用了 put,所以你的方法也应该被 put:

    <%= form_for(@node, url: happy_path(@node), method: :put, do |f| %>
    

    【讨论】:

    • 我也尝试将两者都包含在内,但表单不会提交。
    • 提交未发生时,您的日志中有什么内容?我只是想知道为什么你需要这部分url: happy_path(@node)
    • 找不到 NodesController#happy 的模板,渲染头:no_content
    • 已完成 204 无内容
    • 它还声明没有路由匹配 [Get] "/happy/node/10003"
    【解决方案2】:

    如果您想继续使用PATCH,则需要添加patch 路由:

    patch '/happy/node/:node_id', to: 'nodes#happy', as: :happy
    

    【讨论】:

    • 所以我会在路由中添加补丁并将方法补丁保留在表单上?
    • 我在我的路由和表单中添加了补丁,我得到'没有路由匹配 [put]'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多