gpt4 book ai didi

ruby-on-rails - 是否可以在部分中只放置一个 rails 表单元素?

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:33 25 4
gpt4 key购买 nike

我的应用有一个选择框供用户选择“地点”。如您所料,此选择框位于一个表单中。我还在页面上的某处执行了一个操作,该操作通过 AJAX 创建了一个新场所。创建新 field 后,我想更新 field 选择框以反射(reflect)这一点。

我的解决方案是将选择框放在局部中,并从 Controller 中的创建操作中呈现局部。

 <div id="venue_select" style="clear: both;">
<%= render :partial => 'venue/venue_select_box' %>
</div>

局部看起来像这样:

<%= f.collection_select :venue_id, @user_venues, :id, :name, :prompt => 'Select a venue' %>

其中 f 是表单引用:

<% form_for :shows do |f| %>

问题是 f 在部分中未定义,所以我得到一个错误。一种解决方案是包括整个表格,但我觉得没有必要这样做,因为我没有更新整个表格。关于如何解决这个问题有什么想法吗?

最佳答案

您可以像这样将变量传递给部分:

  <%= render :partial => 'venue/venue_select_box', :locals => { :f => f } %>

对于这样的事情,查看 documentation 总是好的.

编辑:要将部分与 AJAX 请求一起使用,您需要在 .rjs 模板中“重新创建”表单。因此,在您的 Controller 中,您需要再次找到该对象。

 def venue_select
@venue = Venue.find(params[:id])
respond_to do |format|
format.html
format.js
end
end

然后在你的 venue/venue_select.rjs 文件中:

 form_for @venue do |f|
page[:element].replace_html :partial => 'venue/venue_select_box', :locals => { :f => f }
end

其中 :element 是您要替换的选择菜单的 ID。基本上,您只需重新创建 form_for,然后使用它来更新选择字段。

关于ruby-on-rails - 是否可以在部分中只放置一个 rails 表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com