2014-04-02 74 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