为可确认模块设计自定义路由



我试图将用户路由到自定义欢迎页面后,他们确认他们的帐户通过设计的可确认。自定义页面位于/districts/setup/,可通过distrits_setup_path访问。

为了做到这一点,我添加了自定义路由, <>之前device_for:users,:controllers => {:registrations => 'registrations',: confirations => ' confirations '}之前

并创建了我自己的控制器。然后我必须重载confirmations_controller。现在有:

(app/controllers/confirmations_controller.rb)

<>之前类ConfirmationsController |设计::ConfirmationsController# GET/resource/confirmation?confirmation_token =六边形abcdefdef显示自我。资源= resource_class.confirm_by_token(params[:confirmation_token])如果resource.errors.empty ?Set_flash_message (:notice,:confirmed) if is_navigational_format?sign_in (resource_name、资源)redirect_to districts_setup_path其他的render_with_scope:新#不:# respond_with_navigational(资源。错误,:status =>:unprocessable_entity){结束结束结束之前

这工作得很好,但我很紧张,因为我没有以最理想和最健壮的方式做这件事。特别是,我刚刚删除了respond_with_navigational(…)我真的不明白的台词

我希望把这一切都写在一个如何为设计wiki,我只是在寻找反馈是相当新的rails,甚至较新的设计/引擎/监狱长。

查看设计的ConfirmationsController,您可以发现受保护的方法after_confirmation_path_for(resource_name, resource)。重写它(而不是整个操作)将以更少的努力产生相同的结果。

一般来说,重写设计的控制器没有问题,因为它们代表的默认行为并不总是适合应用程序的需要。也就是说,在重写设计的代码之前,你必须做一些事情:

  1. 设计不仅仅是系统的另一个组件-它处理用户身份验证,这是一个非常敏感的问题。在你提交之前,确保你没有破坏任何重要的东西。你可以这样做:从github派生出设计项目,进行修改,然后运行测试。
  2. 当您更改设计并覆盖其代码时,升级到新版本将变得更加困难,这可能与您的更改不兼容。
  3. 如果你决定做出改变,寻找尽可能小的改变来实现你的目标。在大多数情况下,设计团队已经预见到某些地方的定制需求,并留下了专门用于定制的方法(如上面的方法)。再一次,在设计的GitHub上浏览文件的代码会给你一个好主意,什么是最好的方式来定制它的行为,以满足你的需要。

相关内容

  • 没有找到相关文章

最新更新