为什么我无法访问哈希元素但仍然能够在视图中打印/调试元素的对象?

时间:2014-10-07 18:51:20

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个表单,我使用表单中的hidden_​​field将对象作为参数传递。

<%= hidden_field_tag :activity, @activity %>

在我的控制器show方法中,我在变量

中停止params内容
@activity = params[:activity]

在我看来,我可以访问它。下面我使用了debug:

--- 'Activity:MouQj8XFEZ {"activityDescription"=>"Swimming in a pool", "activityName"=>"name a",
  "activityType"=>"swimming", "address"=>"022222 Pawson''s Road, Croydon, England,
  United Kingdom, ddd 2QD", "approvalStatus"=>false, "coordinates"=>#<Parse::GeoPoint:0x007f82dbace828
  @longitude=-0.09898502194827019, @latitude=51.3919513918931>

所以我知道变量中有一些东西。现在当我尝试这样访问它时:

Activity Name - <%= @activity["activityName"] %>

Activity Type - <%= @activity["activityType"] %>

Description - <%= @activity["activityDescription"] %>  

我收到了字符串:

Activity Name - activityName

Activity Type - activityType 

Description - activityDescription

我之前从未遇到过这种行为。

我错过了什么吗?

会感激一些帮助。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您应该考虑使用多个hidden_filed_tag

<%= hidden_field_tag :activity_name, @activity.activityName %>
<%= hidden_field_tag :activity_type, @activity.activityType %>
<%= hidden_field_tag :activity_description, @activity.activityDescription %>

然后在控制器使用中:params["activityName"]params["activityType"]params["activityDescription"]来访问每个。

实际上,您要做的是在HTML上隐藏字段中创建一个对象:

<%= hidden_field_tag :activity, @activity %>

注意:@activity是一个对象,这就是为什么你得到那个字符串而不是你预期的params的原因。