在过去的一两个小时内,我曾尝试在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
而且我已经尝试过自己研究我的问题,但我找不到任何解决方案
回答评论中的答案
答案 0 :(得分:0)
您的路线订单2.意味着您在视图中执行类似order_path(@someid)的操作,但没有为需要id的订单定义路由...如果您需要路由特定ID,请执行类似此操作
get 'order/:id' , to: 'controller#action' , as: :order
然后在你的观点中
order_path(@someid)
Patch和put用于更新数据而不是创建..
答案 1 :(得分:0)
对于此问题,您必须先按照以下代码更新路线
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)%>
希望它会有所帮助