2013-07-03 22 views
0

我寫一個控制器需要 1)接收的請求,並處理它 2)調用基於所述請求的模型PARAMS 3)發送請求到一個API包裝 4)接收該API調用的輸出並返回給用戶是否有可能在軌道中添加查詢字符串到請求?

問題是控制器採用其格式爲controller/:param1/:param2的參數,而模型使用request.query_string方法來提取請求url中的?之後的所有內容。由於request.query_string方法返回空白表示請求到我的控制器,我需要在將請求字符串發送到模型之前添加一個查詢字符串。有誰知道是否有可能做到這一點?

+0

不會是更好的解決方案,以寫一齒條中間件? –

回答

1

當從第一個控制器重定向到第二個控制器時,可以將查詢字符串添加到url。

例如:

redirect_to some_path(:foo => 1, :bar => 2, ...) 

然後request.query_string在第二控制器將是:

"foo=1&bar=2" 
+0

嗨,這將工作正常,但控制器需要保留對執行流程的控制。我編輯了我的問題,使事情更清楚一點。謝謝! –

+0

@ronan_mac在大多數情況下,訪問模型中的request.query_string並不是一個好主意。 「調用模型」是什麼意思?你是否在記錄中調用實例方法?或者模型的類方法?無論哪種情況,您都可以傳遞必要的信息作爲該方法調用的參數。 – Domon

+0

我正在使用[Umlaut](https://github.com/team-umlaut/umlaut/)圖書館前端服務聚合器的項目。在這種情況下,模型是一個特定於元音變音的請求模型,它從查詢字符串中包含的OpenUrl創建一個OpenUrl上下文對象。當然,我可以在模型自己的代碼中編輯事物,以便按照您的說法啓用傳遞,但這會將我自己的應用程序邏輯與變音符代碼混合在一起。經驗告訴我,最好將本地邏輯與導入代碼的邏輯分開。 –

相關問題