我有一个嵌套表单,其中有两个可能的选择菜单用于相同的值。目前,如果两个选择菜单都存在,则只有一个location_id存在于参数中。
因此,即使我在@common_locations_array
中选择了一个值并将@possible_locations
留空,参数也不会包含相关的ID。但是,如果我从@possible_locations
中选择了某些内容并将@common_locations_array
留空,那么该值就在参数中。我想它与订购有关。
=f.simple_fields_for @job.job_locations.build do |p|
=p.input :location_id, collection: @common_locations_array, label: 'Popular Locations'
=p.input :location_id, collection: @possible_locations, label: 'Clients Locations'
那么这会是什么方式呢?我会为每个选择菜单指定自己的自定义参数吗?如果是这样你会怎么做?
或者我应该在选择菜单中将两个数组与某种分隔符合并两个分开两个类别?我该怎么做?
我不确定。
由于
答案 0 :(得分:1)
它与生成的name
标记的input
属性有关。由于您为两个输入字段指定了相同的名称,因此可能生成的name
也是相同的,即job_locations[location_id]
。
现在,由于HTML从上到下执行,下面写的最终会转换为您的prams哈希。因此,您的params[:job_locations][:location_id]
将始终具有在第二个下拉列表中选择的值。为避免这种情况,您可以为这两个下拉列表指定不同的名称。
像
=p.input :popular_location_id, collection: @common_locations_array, label: 'Popular Locations'
=p.input :client_location_id, collection: @possible_locations, label: 'Clients Locations'
现在,可以通过params[:job_location][:popular_location_id]
和params[:job_location][:client_location_id]