操作控制器::路由错误(未初始化的常量用户::确认)错误的原因



我不知道为什么会出现此错误(ActionController::RoutingError (uninitialized constant Users::Confirmations)(,因为连接视图、路由、控制器和模型的结构与同一页面上使用的类似方法/路由相同。

视图

<%= link_to "Approve", approve_user_path(user), method: :patch %>

路线

as :user do
patch 'users/:id/approve', to: 'users/confirmations/#approve', as: :approve_user
end

控制器

class Users::ConfirmationsController < Devise::ConfirmationsController
def approve
@user = User.find(params[:id])
@user.approve
end
end

class User
def approve
self.approved = true
save
end
end

相比之下,这个工作得很好:

视图

<%= form_for user, url: add_name_path(user) do |f| %>
<%= f.text_field :firstname %>
<%= f.text_field :lastname %>
<%= f.submit "Submit" %>
<% end %>

路线

patch 'users/:id/add_name', to: 'users/confirmations#add_name', via: :patch, as: :add_name

控制器

class Users::ConfirmationsController < Devise::ConfirmationsController
def add_name
@user = User.find(params[:id])
@user.update(name_params)
end
private
def name_params
params.require(:user).permit(:firstname, :lastname)
end
end

为什么后者会通过,但前者会给控制器带来未初始化的常量错误?

第一个路由中的to:参数在方法名称之前有一个额外的/

试试这个:

as :user do patch 'users/:id/approve', to: 'users/confirmations#approve', as: :approve_user end

相关内容

  • 没有找到相关文章

最新更新