所以我創建了一個小模型/控制器來處理我的應用中的令牌,並使用自定義路由。然而,當我跑的測試(RSpec的),我會得到一個失敗與ActionController :: UrlGenerationError:自定義路由沒有路由匹配
相關代碼
控制器
讀取令牌(在別處產生)
class TokensController < ApplicationController
def read_token
#do whatever this token is supposed to do (unsubscribe, confirm email, etc)
redirect_to(root_path)
end
end
路線
get '/ta/:uuid' => 'tokens#read_token', param: :uuid, as: 'token_action'
條
耙路線產生
token_action GET /ta/:uuid(.:format) tokens#read_token {:param=>:uuid}
模式
包括表明創建鏈接時,該令牌使用UUID,而不是ID
class Token < ActiveRecord::Base
def to_param
uuid
end
end
和IT開發工作模式! :d
但是,當我跑的測試...
測試
RSpec的控制器測試
require 'rails_helper'
RSpec.describe TokensController, type: :controller do
describe "#index" do
it "test" do
get :read_token, uuid: "12345" #12345 is obviously not real
expect(response).to redirect_to(root_path)
end
end
end
錯誤消息
ActionController::UrlGenerationError:
No route matches` {:action=>"read_token", :controller=>"tokens", :uuid=>"12345"}
我試過
呃...幾乎所有的東西。
- 我寫的路徑與每一個方法,我可以
- 我改變
:uuid
到:id
以爲可能是問題 - 我試圖指定的方式不同的屬性,但無濟於事
- 我想盡解決類似問題上的計算器
我認爲這裏有一些困惑。我沒有設置令牌,我正在閱讀它。令牌設置在後端(當前使用'SecureRandom.urlsafe_base64.to_s',但我將查看'has_secure_token') –
:index控制器只讀取令牌。上面的代碼被*非常*減少,以顯示rspec控制器錯誤超過令牌功能 –
好吧,我誤解了你的推理等。仍然不否認你的模式不是那麼好。 –