0

提前致谢!如果你能帮我解决这个问题,它会让我在工作两个月后完成这个项目。这是我的 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>
4

1 回答 1

0

我很确定问题出在您在这种情况下使用 fields_for ,它通常用于显示关联记录的每个实例的一组字段。

于 2013-09-23T12:57:12.697 回答