没有路由匹配[PATCH]“/ order.2”

时间:2017-07-01 10:16:10

标签: ruby-on-rails

在过去的一两个小时内,我曾尝试在SO上使用类似的问题以适应我的具体案例,但它一直没有用。

我在尝试编辑order时遇到以下错误,但在创建order时却没有,这就是为什么我感到困惑,因为我使用相同的形式部分为{ {1}}

我的<%=form_for(@order, :html => {class: "form-horizontal", role: "form"})do |f|%>是:

routes.rb

我不知道发生了什么事,因为我已经习惯get 'dashboard', to: 'order#index' get 'order', to: 'order#new' post 'order', to: 'order#create' get 'edit/:id', to: 'order#edit', as:'edit' post 'edit/:id', to: 'order#update' get 'accept/:id', to: 'order#accept', as: 'accept' get 'submit/:id', to: 'order#submit', as: 'submit' POST而不是GET而且我已经尝试过自己研究我的问题,但我找不到任何解决方案

回答评论中的答案

2 个答案:

答案 0 :(得分:0)

您的路线订单2.意味着您在视图中执行类似order_path(@someid)的操作,但没有为需要id的订单定义路由...如果您需要路由特定ID,请执行类似此操作

get 'order/:id' , to: 'controller#action' , as: :order

然后在你的观点中

order_path(@someid)

Patch和put用于更新数据而不是创建..

答案 1 :(得分:0)

对于此问题,您必须先按照以下代码更新路线

的routes.rb

  resources :order, except: [:show, :destroy]

创建一个帮助函数,用于添加创建时间和更新时间链接

def order_form_path(object)
    object.new_record? ? "/order" : order_path
end

现在在form_for部分

中使用上面的辅助函数
 <%=form_for(@order,url:order_form_path(@order)%>
希望它会有所帮助