Ruby on rails Rails/Ruby-使用从另一个页面传递的数据预填充表单

Ruby on rails Rails/Ruby-使用从另一个页面传递的数据预填充表单,ruby-on-rails,ruby,Ruby On Rails,Ruby,从rfidview/cabinet/show页面的部分导航到新的设备时,如何获取值以预填充该设备表单设备有一个rfid 来自CAB/show的链接: <%= link_to "Create New Device (non-functional)", new_device_path({:id => @rfid.id, cabinet_id: @cabinet.id}), :class => "btn btn-primary" %> 结束 新设备/\u表单的机柜id和rfi

rfid
view/cabinet/show页面的
部分导航到新的
设备时,如何获取值以预填充该设备
表单<代码>设备
有一个
rfid

来自CAB/show的链接:

<%= link_to "Create New Device (non-functional)", new_device_path({:id => @rfid.id, cabinet_id: @cabinet.id}), :class => "btn btn-primary" %>
结束

设备/\u表单的机柜id和rfid部分

<tr>
        <th>Cabinet</th>
        <td><%= f.select :cabinet_id, options_from_collection_for_select(Cabinet.order(:name).all, "id", "name", @device.cabinet_id) %></td>
</tr>


<tr>
        <th>RFID</th>
        <td><%= f.text_field :rfid, :value => params[:rfid]%></td> 
</tr>

内阁
射频识别
参数[:rfid]>
谢谢。

如果您有:

<%= link_to "Create New Device (non-functional)", new_device_path({:id => @rfid.id, :cabinet_id => @cabinet.id}), :class => "btn btn-primary" %>

请注意,您的params键必须与传递到
链接到
标记的哈希中的值相匹配。

@zeantsoi的答案大部分有效,但它破坏了编辑功能。作为修复,我建议进行以下小修改:

<%= f.select :cabinet_id, options_from_collection_for_select(Cabinet.order(:name).all, "id", "name", params[:cabinet_id] || @device.cabinet_id) %>

<%= f.text_field :rfid, :value => params[:rfid] || @device.rfid %>

参数[:rfid]||@device.rfid%>

这样,如果
params[:cabinet\u id]
不存在,
@device.cabinet\u id
(现有值)将持续存在。

您是否只想让RFID字段预填充?不,只需一步一个脚印。如果我能搞清楚rfid,我很有希望能自己得到这个文件柜。我已经用代码回答了这个问题,代码应该预先填充这两个字段。你能告诉我它是否有效吗?太棒了!我不得不摆弄一下,但你肯定让我走上了正确的道路。除了
\u form.rb
也被
编辑
操作使用,现在编辑这些值被破坏了。@aidan,你一定是在开玩笑;如果您的
\u form.rb
值受到影响,则它们的映射不正确。另外,提供一些关于你正在经历的问题的上下文也会很有帮助,特别是在跟进一个三年前的答案时。您使用的Rails版本是什么?自从这个问题被回答后,这个版本已经被修改了好几次。@zeantsoi我想你是建议他用
\u form.html.erb
中的
参数[:id]>
替换
?如果他这样做,那么是的,该值将默认为
params[:id]
。但是,如果
\u form.html.erb
编辑.html.erb
包含在
中,因为用户试图编辑一个现有的
@设备
,那么
@设备
rfid
值将被删除。我终于找到了一种防止这种情况的方法:将
更改为
。这样,如果
params[:cabinet\u id]
为空,则将使用
@device.cabinet\u id
(现有值)。
<%= f.select :cabinet_id, options_from_collection_for_select(Cabinet.order(:name).all, "id", "name", params[:cabinet_id]) %>

<%= f.text_field :rfid, :value => params[:id] %>
<%= f.select :cabinet_id, options_from_collection_for_select(Cabinet.order(:name).all, "id", "name", params[:cabinet_id] || @device.cabinet_id) %>

<%= f.text_field :rfid, :value => params[:rfid] || @device.rfid %>