gpt4 book ai didi

ruby-on-rails - 如何修复 "No route matches [PATCH]"

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:34 24 4
gpt4 key购买 nike

我是 ruby​​ on rails 的新手。我在做一个项目时遇到了表单问题。我正在使用设计进行身份验证。我有一个具有管理员和用户角色的用户类。设计为用户生成的添加/更新方法工作正常。当我尝试为管理员创建编辑页面时遇到“没有路由匹配 [PATCH]”错误。这是我正在使用的表格

<h4>Update Profile</h4>
<%= form_for @user, :url => {:controller => "admin", :action => "update" } do |f| %>

<%= hidden_field_tag(:id, @user.id) %>
<table>
<tr>
<td>First Name</td>
<td><%= f.text_field :first_name , :class => "form-control"%></td>
</tr>
<tr>
<td>Last Name</td>
<td><%= f.text_field :last_name , :class => "form-control"%></td>
</tr>
<tr>
<td>Email</td>
<td><%= f.text_field :email , :class => "form-control"%></td>
</tr>
<tr>
<td></td>
<td><%= f.submit "Update", :class => "btn btn-md btn-success pull-right" %></td>
</tr>
</table>

<%结束%>

这是我的 Controller 方法

def edit
end

def update
@user = User.find(params[:id])
if request.post?
if(@user.update_attributes(params[:first_name, :last_name, :email] ))
redirect_to :action => "admin_portal"
else
render :action => "edit"
end
end

end

我也有路线

get 'admin/update'
get 'admin/edit'

谁能建议我如何解决这个问题。

最佳答案

要点是:您仅通过 HTTP 方法设置 GET,而对于更新,您需要 PUTPATCH 方法。何时使用 PUTPATCH 有一些约定,但在您的情况下,创建一个 PATCH 路由可以解决您所说的问题

patch 'admin/:1'

但是,显然您正在为每个 REST 方法编写自己的路由,并且 Rails 有一个名为 resources 的“助手”结构,它为您创建所有 REST 方法。您可以在 config/routes.rb 上只创建一个入口,例如:

resources :admins

它会生成每条用于 REST 方法的路由,指向您的 user_controller 并重命名为 admin。只放那行代码,相当于在你的配置/路由上写下所有这些命令:

get 'admins', controller: 'admins', action: :index
get 'admin/:id', controller: 'admins', action: :show
get 'admin/new', controller: 'admins', action: :new
get 'admin/:id/edit', controller: 'admins', action: :edit
post 'admin', controller: 'admins', action: :create
patch 'admin/:id', controller: 'admins', action: :update
put 'admin/:id', controller: 'admins', action: :update
delete 'admin/:id', controller: 'admins', action: :delete

您可以在 Rails guides 上查看更多信息.它有很多关于创建路线的有用建议。

关于ruby-on-rails - 如何修复 "No route matches [PATCH]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27223168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com