我收到此错误消息:
没有与 [POST] "/users/9" 匹配的路由
我正在尝试找出一种方法来拥有一个控制器的更新方法,并在另一个控制器的 show 方法视图中使用它。这就是我的路由文件的样子。
路线.rb
Rails.application.routes.draw do
root 'dashboards#index'
devise_for :users
resources :users, only: [:show]
patch '/users/:id' => 'companyinfos#update'
put '/users/:id' => 'companyinfos#update'
resources :dashboards, only: [:index]
end
我通过用户控制器找到了正确的公司信息
users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@companyinfo = Companyinfo.find(current_user.id)
end
end
我说在我的company_info控制器中使用此方法
companyinfos_controller.rb
class CompanyinfosController < ApplicationController
def update
@companyinfo = Companyinfo.find(current_user.id)
if @companyinfo.update(companyinfo_params)
flash[:notice] = "Saved ..."
else
flash[:alert] = "cannot save"
end
render 'edit'
end
private
def companyinfo_params
params.require(:companyinfo).permit(:CompanyStage)
end
结束
最后,我正在使用form_for在users_path上更新它
显示.html.erb
<%= form_for :companyinfo do |f| %>
<%= f.text_field :CompanyStage %>
<%= f.submit "save", class: "btn btn-success" %>
<% end %>
当我通过 companyinfo/:id/edit 更新数据库中的信息时,更新数据库中的信息工作正常,但如果我尝试在另一个视图(例如 users/:id)上更新它,我会收到上面的错误消息。正确的方法是什么?
更新实际上,如果我只是按照错误消息告诉我的那样工作,它就可以工作。奇迹吧?另一个问题。有没有另一种方法可以让来自不同控制器的多个路由指向同一位置?或者这是最好的方法?
错误显示:没有匹配的路由 [POST]
更新路由:
post '/users/:id' => 'companyinfos#update'
或表单方法:
<%= form_for :companyinfo, method: :patch do |f| %>