加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails – 如何在表单上使用隐藏字段来传递与表

发布时间:2020-12-17 03:54:59 所属栏目:百科 来源:网络整理
导读:我试图从一个从hidden_??field创建设备的表单中传递一个rfid_tag.设备has_many rfids. rfid已经存在于db中. 以下是表单中的代码: thRFID Tag #/thtd %= f.label(:@passed_rfid_tag,@passed_rfid_tag) % %= f.hidden_field :rfid_tag,:value = @passed_rfid_
我试图从一个从hidden_??field创建设备的表单中传递一个rfid_tag.设备has_many rfids. rfid已经存在于db中.

以下是表单中的代码:

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

这是来自devices_controller的代码:

def create
   @cabinet = Cabinet.find(params[:device][:cabinet_id])
   @device = Device.create(params[:device])
   @device.rfids << Rfid.where('rfid_tag' => params[:rfid_tag]).first
   @device.row_id = @cabinet.row_id
   @device.save

我收到以下错误,因为rfid_tag不是设备的属性.它是rfid的一个属性:

Can't mass-assign protected attributes: rfid_tag

app/controllers/devices_controller.rb:182:in `create'

谢谢.

解决方法

质量分配错误正在发生,因为您传递的是:rfid_tag作为params [:device]属性哈希的一部分.

在您的示例代码中,需要使用hidden_??field_tag表单帮助程序提供:rfid_tag字段.这将使其不被包含在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_tag]访问它.您的create方法仍然有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读