【发布时间】:2020-06-02 00:14:01
【问题描述】:
我不知道为什么会出现此错误 (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
为什么后者通过了,而前者却导致控制器出现未初始化的常量错误?
【问题讨论】:
标签: ruby-on-rails