我有一个活动表格,其中有一个选择下拉场地。目前,如果要为活动添加新的场地,则用户必须导航到场地形式,创建他们的场地,然后导航回事件形式,这不太理想。
我有一半是通过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>
有人可以帮助解决这个难题中的最后几件吗?
答案 0 :(得分:0)
这只是一个提示。获取您的选择ID,并在.js.erb文件中附加$('#select_box_id').append('<option value="<%= venue.value %>"><%= venue.name %></option>')
的新地点。