Rails Ajax Form添加新的关联记录

时间:2013-06-19 15:36:41

标签: ruby-on-rails ajax ruby-on-rails-3

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

我有一半是通过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,它本身就是一个部分位于 应用程序/视图/活动/ _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>

有人可以帮助解决这个难题中的最后几件吗?

1 个答案:

答案 0 :(得分:0)

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