繁体   English   中英

Ruby on Rails-编辑更新操作

[英]Ruby on Rails - Edit Update Action

我有一个想要编辑一些信息的表单,所以我为我们的编辑表单画了一条获取路线和一条更新路线。

routes.rb中:

resource :guide_dog_forms

get '/cao-guia/:id/editar', to: 'guide_dog_forms#edit', as: :edit_guide_dog_form
put '/cao-guia/:id/', to: 'guide_dog_forms#update'

之后,我编辑了控制器,因此添加了以下操作:

class GuideDogFormsController < ApplicationController

  def create
    @contact = GuideDogForm.new(params[:contact])
    if @contact.save
      GuideDogMailer.delay_for(10.seconds, retry: true).create(@contact)
      render nothing: true, status: 200
    else
      render nothing: true, status: 400
    end
  end

  def edit
    @guidedoguser = GuideDogForm.find(params[:id])
  end

  def update
    @guidedoguser = GuideDogForm.find(params[:id])
    @guidedoguser.update(name: params[:name], email: params[:email])
    redirect_to guide_dog_form_path(@guidedoguser)
  end

end

我当前的耙路是这样的:

guide_dog_forms POST - /guide_dog_forms(.:format) - guide_dog_forms#create
new_guide_dog_forms GET - /guide_dog_forms/new(.:format) - guide_dog_forms#new
edit_guide_dog_forms GET - /guide_dog_forms/edit(.:format) - guide_dog_forms#edit
GET - /guide_dog_forms(.:format) - guide_dog_forms#show
PATCH - /guide_dog_forms(.:format) - guide_dog_forms#update
PUT - /guide_dog_forms(.:format) - guide_dog_forms#update
DELETE - /guide_dog_forms(.:format) - guide_dog_forms#destroy

当我提交编辑表单时,呈现的URL为localhost:3000/guide_dog_forms.80 (80是我尝试编辑的表单的ID),而不是我在路由中定义的URL。 为什么会这样呢? 有人可以帮助我吗? 谢谢。

那是您的resource路线的副产品。

尝试运行rake routes 您应该在那里看到带有输出/guide_dog_form/:idguide_dog_form_path路由,该路由说明了重定向。 如果您希望覆盖resource方法的行为,则可能必须设置另一个命名的路由并重定向到该路由。

通常,您会将对象的单数形式传递给resource resource :guide_dog_formresources的复数形式。 resources :guide_dog_forms

根据您提供的代码,我想您的意图是: resources :guide_dog_forms

* FWIW,从Rails 4开始,习惯上使用PATCH动词而不是PUT来更新记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM