提前致谢!如果你能帮我解决这个问题,它会让我在工作两个月后完成这个项目。这是我的 Rails 表单的设置:
我有两个多选框。“航点”开始时没有任何选项。“select1”具有所有选项。
我使用按钮和 javascript 将选项从“select1”移动到“waypoints”。
"waypoints" 是一个FormBuilder collection_select。
出于某种原因使用下面的代码,
创建新记录时,视图中不会出现“航点”。
当更新已保存在数据库中的航点的记录时,“航点”多选框会在视图中重复出现。例如,如果我在数据库中保存了三个地址作为航点,我会在屏幕上看到三个多选框,每个框都突出显示了一个不同的选项。我想知道它是否与这个问题有关:如何使用 fields_for 停止表单重复?尝试了一些相关的选项,但仍然没有运气。
看法
请注意,这是我正在更新的 Rails 2 应用程序。这就是为什么 form_for 和 fields_for 没有 = 符号的原因。
<% form_for @newsavedmap, :html => { :id => 'createaMap' } do |f| %>
<%= f.error_messages %>
<%= f.text_field :name, {:id=>"savemap_name", :size=>30 }%></p>
<% f.fields_for :waypoints do |w| %>
<%= w.collection_select :waypointaddress, @newsavedmap.waypoints, :waypointaddress, :waypoint_name, {}, { :multiple => true, :class => "mobile-waypoints-remove", :id =>"waypoints" } %>
<% end %>
<select multiple id="select1">
OPTIONS
</select>
JAVASCRIPT BUTTONS TO MOVE OPTIONS TO WAYPOINTS
<% end %>
已保存航路点记录的视图输出
<div>
<select id="waypoints" multiple="multiple" name="newsavedmap[waypoints_attributes][0][waypointaddress][]">
<option value="1600 Pennsylvania Ave NW, Washington, DC 20500" selected="selected">DC</option>
<option value="350 5th Ave, New York, NY 10118">NY</option>
</select>
<input id="newsavedmap_waypoints_attributes_0_id" name="newsavedmap[waypoints_attributes][0][id]" type="hidden" value="123">
<select id="waypoints" multiple="multiple" name="newsavedmap[waypoints_attributes][1][waypointaddress][]">
<option value="1600 Pennsylvania Ave NW, Washington, DC 20500">DC</option>
<option value="350 5th Ave, New York, NY 10118" selected="selected">NY</option>
</select>
<input id="newsavedmap_waypoints_attributes_1_id" name="newsavedmap[waypoints_attributes][1][id]" type="hidden" value="124">
</div>