0

我有一个活动表格,其中包含场地的选择下拉菜单。目前,如果要为活动添加新场地,用户必须导航到场地表单,创建他们的场地,然后导航回活动表单,这不太理想。

我已经通过 AJAX 完成了一半的工作,但还没有完成。我的活动表单上有一个链接,该链接调用包含场地表单的(twitter bootstrap)模式。场地表格已设置为:remote => true并在提交时创建了一个新场地,但模式/表格没有关闭,并且活动表格的场地选择没有刷新。我必须手动刷新页面以确认添加了新场地。

VenueController 创建动作如下所示,响应调用 format.js

  def create
    session[:return_to] ||= request.referer
    @venue = Venue.new(params[:venue])

    respond_to do |format|
      if @venue.save
        format.js
      else
        format.html { render :action => "new" }
      end
    end
  end

在 app/views/venues 我有 create.js.erb 它看起来像这样:

$('#townvenue').html("<%= escape_javascript(render(@town_venue)) %>");

(我几乎可以肯定这是我出错的地方)。

#townvenue是我的事件表单中的一个 div,它本身是位于 app/views/events/_town_venue.html.erb 中的一个部分

<div id="townvenue">
<div>
  <%= f.label :town_id, :class => 'control-label form_labels' %>
  <%= f.collection_select :town_id, Town.order(:town), :id, :town, include_blank: true %>
</div>

<div>
  <%= f.label :venue_id, "Venue", :class => 'control-label form_labels' %>
  <%= f.grouped_collection_select :venue_id, Town.order(:town), :venues, :town, :id, :name, include_blank: true %><br /><a href="#myModal" role="button" data-toggle="modal">[Add new venue]</a><br />
</div>
</div>

有人可以帮忙解决这个难题的最后一部分吗?

4

1 回答 1

0

这只是一个提示。获取您选择的 id 并将您的新场地附加到$('#select_box_id').append('<option value="<%= venue.value %>"><%= venue.name %></option>')您的 .js.erb 文件中。

于 2013-06-19T16:39:05.690 回答