Rails 3的問題。獲取原始參數而不是「加工成哈希」版本
如果我發送這樣PUT http://myapp/posts/123?post [title]=hello
的請求,然後在我的控制,我得到params = {:id => 123, :post => {:title => "hello"}}
這是罰款正常,通常可用於如Post.create(params[:post])
然而,在此之際,我需要得到訪問參數的「原始」形式,所以我可以命令他們提取值,將它們全部作爲簡單字符串處理,即我要列出它們,因此參數名稱爲"post[title]"
,參數值爲"hello"
。
有沒有什麼辦法讓我獲得這些價值?我認爲可能有一個方法request
有參數在他們原來的粘性形式,但我找不到一個。
我曾想過嘗試使用to_param將散列轉換回字符串,但這看起來很髒但可能是不必要的。
作爲獎勵,我希望它忽略:id參數,從字面上只是採取後的部分?在原始請求中。事實上,如果我可以找回原始請求字符串,即"http://myapp/posts/123?post[title]=hello"
那麼這樣做:我可以拆分?並從那裏拿走。我想到我可能會把它從頭文件中刪除。但是在此期間,如果有誰知道一個更好的方式,然後請告訴我:)
感謝您的任何意見 - 最大
我不知道我怎麼錯過request.url,我想我試了一下,得出一個空白,但顯然搞砸了,因爲這給了我現在的完整網址,謝謝。然而,'URI.decode_www_form(u.query)'被'NoMethodError炸燬了(當你沒有想到它的時候,你有一個零對象! 你可能已經期望了一個Array的實例 評估nil時發生錯誤。空嗎?):' –
更多信息:request.url實際上只是爲我返回路徑部分(這就是爲什麼我早點打折)。所以,我想這意味着一些變量來保存參數被設置爲零,這是你的代碼示例隨後炸燬的。 –
@Max:哪個版本的Ruby和Rails和什麼是'u.class'?如果你只是從'request.uri'獲得這條路徑,那麼'URI.parse'不會給你一個'URI :: HTTP',所以不需要'query'方法。 –