2014-04-02 71 views
1

當服務器正在運行時,通過散列發送它們時,通過散列發送的參數是什麼?這是我正在談論的終端中的部分。什麼是Ruby on Rails控制器參數?

Started POST "/topics/2/feeds" for 127.0.0.1 at 2014-04-01 21:01:17 -0700 
Processing by FeedsController#create as JS 
# HERE... 
Parameters: {"feed"=>{"text"=>"Hello!"}, "commit"=>"Create Feed", "topic_id"=>"2"} 

RailsGuides他們只是說,這是在URL或POST數據的查詢字符串,但它只是Ruby代碼?它可以是JSON嗎?

+0

我不完全確定,但我認爲它可能只是語言不可知的HTTP動詞數據(比如'GET'或'POST'),而不是Ruby代碼。你的意思是「它可以是JSON」嗎?如果您想將JSON傳遞給控制器​​,您可以「POST」它,或者使用GET來將其作爲url查詢參數發送,儘管在這種情況下可能需要先對其進行網址編碼。 –

回答

0

這不是一個散列。您在控制檯中看到的內容Parameters: {"id"=>"2"}僅僅是人類可讀性參數的表示形式。

GET /topics/2 

如果你看着你的config/routes.rb,你可能會發現這樣一行:在你目前的特殊情況下,參數在URL中給出

resources :topics 

這意味着TopicsController會被視爲一種資源,而當你提出這一要求,

GET /topics/2 

Rails會解釋它,你所要求的一個話題資源ID爲2。因此請求將指向您的控制器的方法show,並且您的params散列將具有id密鑰,其值爲2。請參閱Rails Routing

0

參數是通過查詢字符串或POST數據從客戶端接收的簡單哈希,就像文檔所述。要在控制器中訪問它,Rails使得params散列可用。

對於上述示例,只需使用params[:id]即可獲取值2。如果你使用Rails表單,Rails默認會有一些鍵和值。其他人可以在客戶端指定,通常使用某種Ajax查詢。

+0

感謝您的清理。 – amankapur91