Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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_Ruby - Fatal编程技术网

Ruby on rails Rails-如何使用窗体上的隐藏字段传递与窗体上创建的对象相关的对象值?

Ruby on rails Rails-如何使用窗体上的隐藏字段传递与窗体上创建的对象相关的对象值?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图从一个表单传递一个rfid\u标签,该表单从隐藏的\u字段创建一个设备。设备有许多RFID。数据库中已存在rfid 以下是表格中的代码: <th>RFID Tag #</th> <td> <%= f.label(:@passed_rfid_tag, @passed_rfid_tag) %> <%= f.hidden_field :rfid_tag, :value => @passed_rfid_tag %> <

我试图从一个表单传递一个
rfid\u标签
,该表单从
隐藏的\u字段
创建一个
设备
。设备
有许多RFID
。数据库中已存在
rfid

以下是表格中的代码:

<th>RFID Tag #</th>
<td>
  <%= f.label(:@passed_rfid_tag, @passed_rfid_tag) %>
  <%= f.hidden_field :rfid_tag, :value => @passed_rfid_tag %>
</td>
</tr>

谢谢。

发生批量分配错误,因为您正在将
:rfid_标签
作为
参数[:device]
属性哈希的一部分传递

在示例代码中,需要使用
隐藏的\u字段\u标签
表单帮助器提供
:rfid\u标签
字段。这将防止它被包括在
params[:device]
散列中

<tr>
  <th>RFID Tag #</th>
  <td>
    <%= label_tag 'rfid_tag', 'RFID Tag' %>
    <%= hidden_field_tag 'rfid_tag', @passed_rfid_tag %>
  </td>
</tr>

射频识别标签#

然后,您可以通过
params[:rfid\u tag]
访问它。您的
create
方法应该仍然有效。

按照Dan Reedy所说的做,并在表单中使用隐藏的\u字段\u标记

我关心控制器创建方法中的这一行:

@device.rfids << Rfid.where('rfid_tag' => params[:rfid_tag]).first

当然,一定要处理在数据库中找不到从params散列中获得的cabinet_id或rfid_标记的情况。无法指望用户提供的输入有效或与真实记录相对应,即使它来自隐藏字段。

发生批量分配错误,因为您正在将:rfid_标记作为params[:device]属性哈希的一部分进行传递。
Dan,我刚刚检查了这一点,但这不是真的。我在创建操作中传递了额外的参数,一切正常。
<tr>
  <th>RFID Tag #</th>
  <td>
    <%= label_tag 'rfid_tag', 'RFID Tag' %>
    <%= hidden_field_tag 'rfid_tag', @passed_rfid_tag %>
  </td>
</tr>
@device.rfids << Rfid.where('rfid_tag' => params[:rfid_tag]).first
rfid = Rfid.where('rfid_tag' => params[:rfid_tag]).first
rfid.device_id = @device.id
rfid.save!