Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何通过rails的表单传递对象?_Ruby On Rails_Object_Form For - Fatal编程技术网

Ruby on rails 如何通过rails的表单传递对象?

Ruby on rails 如何通过rails的表单传递对象?,ruby-on-rails,object,form-for,Ruby On Rails,Object,Form For,我有个问题。有一种形式需要传递两个值​​和两个对象(teamh、teamq) 试图通过隐藏字段中的对象。但它们是以这种形式通过的 <input id="score_team1" name="score[team1]" type="hidden" value="#&lt;Team:0x00000002db46b8&gt;" /> <input id="score_team2" name="score[team2]" type="hidden" val

我有个问题。有一种形式需要传递两个值​​和两个对象(teamh、teamq)



试图通过隐藏字段中的对象。但它们是以这种形式通过的

 <input id="score_team1" name="score[team1]" type="hidden" value="#&lt;Team:0x00000002db46b8&gt;" />
 <input id="score_team2" name="score[team2]" type="hidden" value="#&lt;Team:0x00000003335380&gt;" />


如何将一个对象通过表单传递给rails?

值:
选项设置为
teamh
最终会在每个实例上调用
#to_s
方法,导致出现
#Team:0x00000002db46b8
胡言乱语。相反,您应该传递一些唯一标识每个团队的标识符,例如他们的数据库ID。例如,您可以将其更改为:

    <%= f.hidden_field :team1_id, value: teamh.id %>
    <%= f.hidden_field :team2_id, value: teamq.id %>

这可能对你有帮助。答案是我们不能将对象从rails视图传递到控制器。视图代码是关于获取对象并将它们表示为文本HTML。您不能在呈现页面中实际表示对象,只能包含唯一标识该对象的引用,即其数据库ID。能否详细说明“需要传递对象”的原因?请考虑一下。我需要把物体传过去。还有其他方法吗?模型需要传输对象,对于一组表,Rails视图中的所有内容都必须是文本,这将您限制为简单的数据类型,如字符串、整数、,等等。考虑当用户通过GET或POST请求提交表单时,数据将如何传递回您:它将通过
params
散列返回到您的控制器,此时它将是一个简单的数据类型,如字符串或整数。如果您在表单中传递数据库ID,当用户提交表单时,它将再次向您传递数据库ID,在接收控制器操作中,您只需通过ID查找记录,然后对其进行适当的更改。
    <%= f.hidden_field :team1_id, value: teamh.id %>
    <%= f.hidden_field :team2_id, value: teamq.id %>
k = Team.find params[:team1_id]
d = Team.find params[:team2_id]

Score.create team1: d, team2: k, team1_score: 1, team2_score: 3