如何在邮件程序视图中自定义Devise生成的默认行?
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
我在我的控制器中编写了一个名为user_confirm
的方法。我也为它定义了一条路线。我可以使用令牌作为参数来获取链接到该方法的URL吗?
答案 0 :(得分:8)
我使用了这个路由:
map.user_confirm 'confirm/:confirmation_token',
:controller => 'confirmations', :action => 'show'
这个ERB:
<%= link_to 'Confirm my account',
user_confirm_url(:confirmation_token => @resource.confirmation_token) %>
得到了这个不错的链接:
http://localhost:3000/confirm/RjOnrd5yNREEDwsEfiFa
答案 1 :(得分:7)
类似于(在routes.rb中):
devise_scope :user do
match '/confirm/:confirmation_token', :to => "devise/confirmations#show", :as => "user_confirm", :only_path => false
end
在视图中,您可以使用以下内容:
<%= link_to 'Confirm my account', user_confirm_url(@resource.confirmation_token) %>
for Rails 3。
答案 2 :(得分:2)
rails 4.0.5
devise 3.2.4
<强> URL:强>
http://example.com/users/confirmation?confirmation_token=jevYKv1z9Pr1LsAUB2NX
应用/视图/设计/邮寄者/ confirmation_instructions.html.erb:强>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
<强>配置/ routes.rb中:强>
devise_scope :user do
get 'confirm/:confirmation_token', to: 'devise/confirmations#show'
end
应用/视图/设计/邮寄者/ confirmation_instructions.html.erb:强>
<p><%= link_to 'Confirm my acount', confirm_url(@token) %></p>
<强> URL:强>
http://example.com/confirm/Kezap1iutgvXyQAhyu64
答案 3 :(得分:0)
知道了。 假设我定义了这样的命名路线。
map.user_confirm '/user_confirm', :controller => 'users', :action => 'confirm'
我所要做的就是
<p><%= link_to 'Confirm my account', user_confirm_url(confirmation_token => @resource.confirmation_token) %></p>
答案 4 :(得分:0)
自定义设计URL不会udpate用户表的'confirmed_at'列,您可以做的是在点击确认链接后重定向用户:
第1步 覆盖confirmmations_controller中的after_confirmation_path_for:
在app / controllers目录中创建一个新的confirmations_controller.rb:
devise_for :users, controllers: { confirmations: 'confirmations' }
第2步在config / routes.rb中,添加此行,以便Devise将使用您的自定义ConfirmationsController。这假设Devise在用户表上运行(您可以编辑以匹配您的用户)。
{{1}}
第3步重启网络服务器