gpt4 book ai didi

ruby-on-rails - rails fields_for 在嵌套表单上验证错误后不呈现

转载 作者:行者123 更新时间:2023-12-04 04:47:45 24 4
gpt4 key购买 nike

我有一个嵌套表单问题。我实现了 railscasts 196 和 197 的嵌套表单解决方案。如果我没有验证错误,它就可以工作。

因此,表单在加载时呈现完美,包括嵌套字段(在 fields_for 部分)。

但是,表单有验证。当验证失败时, Controller 会渲染 :new。然后表单可以正常呈现链接的模型字段,但不再呈现嵌套字段。有解决方案吗?

Controller

  def new
@property = Property.new
@property.images.build
end

def create
@property = Property.new(params[:property])
if @property.save
flash[:success] = t('Your_property') + ' ' + t('is_successfully_created')
redirect_to myimmonatie_url
else
render :action => 'new'
end
end

部分观点:
<% form_for :property, @property, :url => { :action => "create" }, :html => { :multipart => true } do |f| %>
<div id="new-property-form-spannedcols">
<div class="formField inptRequired">
<%= f.label :postal_code, t("Postal_code") %>
<%= f.text_field :postal_code, :class => 'inptMedium short' %>
</div>
<div id="city_row" class="formField inptRequired">
<%= f.label :city, t("City") %>
<div id="city_cell">
<%= render :partial => 'ajax/cities', :locals => { :postal_code => @property.postal_code } %>
</div>
</div>

...

<% f.fields_for :images do |builder| %>
<div class="formField">
<%= builder.label :photo, t("Photo_path_max_3mb") %>
<%= builder.file_field :photo, :class => 'inptMedium' %>
<%= builder.hidden_field :order, :value => "1" %>
</div>
<% end %>
</div> <!-- /new-property-form-spannedcols -->
<div class="formBtn">
<%= f.submit t("Save"), :class => 'btnMedium bg-img-home' %>&nbsp;
</div> <!-- /formBtn -->
<%- end -%>

最佳答案

它会抛出错误吗?

我猜你的问题是在你的 new行动,你在做什么@property.images.build ,这不在您的编辑操作中。当验证失败时,它将呈现您的新操作,但不会运行您的新操作。你可以试试把 @property.images.build在您的 create 的 else 子句中 Action 如:

else
@property.images.build
render :action => 'new'
end

无论如何,这都不是最干净的方法,但这将有助于追踪您的问题。

关于ruby-on-rails - rails fields_for 在嵌套表单上验证错误后不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3611543/

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