2016-07-05 61 views
0

試圖解析一個URL這種格式http://landing.com?data=123 - 我已經能夠通過像IRB來獲取數據:滯留在解析URL和工作與它在視圖

require "addressable/uri" 
uri = Addressable::URI.parse("http://landing.com?data=123") 
uri.query_values['data'] 
=> '123' 

但是我卡上如何在Rails視圖中與這些「數據」進行交互。我試圖將其納入控制器(我的樣品中pages_controller.rb),如:

class PagesController < InheritedResources::Base 

    def test 
    uri = Addressable::URI.parse("<%= request.original_url %>") 
    u = uri.query_values['data'] 
    end 

end 

但不知道我怎麼能提取出的數據塊被我的觀點中使用。有關於此的任何指導?

如果我開的像,我稱之爲「測試」方法的一個觀點 - 我越來越未初始化的常量PagesController ::尋址但確信它在我的環境與創業板這尋址/ URI

+0

請問您能提一下您所指的導軌版本嗎? – illusionist

回答

2

控制器有很多已經解析過的查詢信息。您可以通過params訪問它。在這種情況下,你可以使用

u = params[:data] 
+0

那麼,如果數據不屬於模型,那麼如何在視圖/展示我的模型中呈現'數據'? – malditojavi

+1

使用實例變量。 '@ u'而不是'u'。顯示URL或用戶生成內容的內容時要小心。您可能會在您的應用程序中爲XSS攻擊創建一個漏洞。 –

+0

@SophieDéziel+1對'XSS'漏洞警報 – illusionist

0

索菲Déziel說,如果是下應用程序的要求,可以通過PARAMS哈希訪問您查詢的值。 params存在於你的控制器和視圖中。

如果您正在討論從第三方來源獲得的硬編碼URL或URL,您需要在您的控制器中創建一個實例變量(@u = ...)以便在您的視圖中可用。

請注意,您不應該在您的視圖中調用操作方法,它們是由Rails框架「調用」的。

# controller 
def my_action 
    # ..... 
    @u = uri.query_values['data'] 
end 

# view 
<%= @u %>