2017-05-30 54 views
0

我正在關注Mike Hartl的Rails教程&在創建電子郵件模板時遇到了問題。 (請注意:本教程是基於on Rails的5.0.1,而我使用Rails 5.1.1春耕提前。)Rails 5.1郵件錯誤 - 模板中的帳戶激活參數

本教程使用:activation_token & :activation_digest屬性來處理註冊的安全隱患URL和:create_activation_digest掛鉤在創建用戶模型之前設置它們的值。

這裏的郵件視圖模板:

<%= link_to "Activate", edit_account_activation_url(@user.activation_token, email: @user.email) %>

的問題似乎是在告訴梅勒使用的值:在activation_token:路由的ID領域。 (A URL定義錯誤)

,路線如下定義,從rails routes

edit_account_activation GET /account_activations/:id/edit(.:format) account_activations#edit 

錯誤反饋:

No route matches {:action=>"edit", :controller=>"account_activations", :email=>"[email protected]", :format=>nil, :id=>nil}, possible unmatched constraints: [:id] 

我試着硬編碼ID:@ user.activation_token在郵件模板,無濟於事。

這似乎是一個容易的,但我很難過,有點擔心,我忽略了從Rails 5.0.x到5.1.x的過渡中隱藏的東西。有任何想法嗎?

+0

請檢查'@ user.activation_token'是否爲零? –

回答

0

您會收到此錯誤消息,因爲在您的config/routes.rb文件中,您GET /account_activations/:id/edit。這就需要發送一個你不想/不需要的ID。現在我知道Rails Tutorial使用:id作爲標記。但是你並沒有在你的鏈接中定義id:。因此,無論您需要更改路線還是更改鏈接。

<%= link_to "Activate", edit_account_activation_url(id: @user.activation_token, email: @user.email) %> 

通知我定義了id:。通常在本教程之外,您應該考慮將您的路線更改爲GET /account_activations/edit/:token,然後通過令牌查找用戶。

-1

謝謝大家, 但是,錯誤與我如何在用戶模型中定義:activation_token掛鉤有關。現在所有測試都通過了

+0

嗨,布賴恩,你還記得你做錯了什麼,因爲我面臨同樣的問題。謝謝。 – OnlySteveH

相關問題