我有一个创建新订单的表单。其中一个表单元素是地址下拉列表,允许用户从地址模型中选择一个地址。我已对其进行了设置,以便用户可以通过按下订单表单中的按钮,通过Ajax模式创建地址。 除了通过Ajax创建新地址后我想在订单表单中刷新下拉列表的部分外,一切都有效。
我的(部分编辑的)代码如下:
订单控制器
def new
@order = Order.new
end
地址控制器
def new
@address = Address.new(user: current_or_guest_user)
respond_with @address
end
def create
@address = Address.new(address_params)
respond_to do |format|
if @address.save
format.js { render action: 'show_address_ajax', status: :created, location: @address }
else
render json: @address.errors, status: :unprocessable_entity
end
end
end
订单视图(包括订购单)
<%= simple_form_for @order do |f| %>
<div class="row address_dropdown" id="address1_dropdown">
<%= render "address1", f: f %>
</div>
<%= link_to ('New Address'), new_address_path,
data: { modal: true }, class: "btn btn-default", id: "new-pickup-address" %>
<%= f.button :submit, "Save Order", class: 'btn-lg' %>
地址下拉部分(&#39; orders / _address1.html.erb&#39;)
<%= f.association :address, label: false, collection: current_or_guest_user.addresses.pluck(:nombre, :id), prompt: "Select Address", :input_html => { :class => '' } %>
Javascript渲染部分(&#39; show_address_ajax.js.erb&#39;)
$("#address1_dropdown").html("<%= escape_javascript(render partial: 'orders/address1, locals: { f: f }) %>");
订单表格渲染正常,地址模式表单(为简单起见未显示)也渲染确定并创建新地址,但问题是我无法在Ajax调用完成后刷新订单表单中的地址下拉列表,如f变量未定义,但在Order视图中。
感谢任何帮助。