gpt4 book ai didi

ruby-on-rails - ERB 有条件地包含 <% end %> 标签

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

我想知道如何有条件地包含一个“结束”标签

我有很多像这样的“形式部分”

_form_part_x.html.erb(但这并不适应我想做的事情)

<%= form_for(@model) do |f| %>
<%= f.some_tag(...) %>
<% end %>

在很多 View 中,我只需要渲染其中一个。

现在,问题是我想要我的模型有另一个大 View ,我在其中渲染所有这些部分(form_part_1、form_part_2 等)。在我的例子中,我使用的是 Bootstrap 选项卡,每个选项卡都是一个部分,依次调用多个部分 form_part_x生成特定字段。

但我不想在我的 HTML 中有多个表单标签,只有一个大表单,所以所有内容都会同时保存。因此在我的render tabX之前,我编写代码来生成 HTML 标签,并在呈现所有标签后关闭它。

simple_view.html.erb

<%= render 'form_part_x' %> 

big_view.html.erb

<%= form_for(something) do |f| %>
<%= render 'tab1', f:f %>
<%= render 'tab2', f:f %>
...
<%= render 'tab5', f:f %>
<% end %>

_tab1.html.erb

<%= render 'form_part_10', f:f %>
<%= render 'form_part_23', f:f %>

_form_part_x.html.erb(如果我知道如何在 <% if %> block 中添加 <% end %>,这可以适应我的工作

所以基本上,我想我可以调整我的部分以有条件地包含 <%= form_for(@model) do |f| %> :

<%
# These lines help determine whether an HTML `form` tag should be generated or not
f ||= false
if not f then
existing_form = false
else
existing_form = true
%>

<% if not existing_form %>
# If the partial is called without sending a local f, we want to create the HTML `form` tag
<%= form_for(something) do |f| %>
<% end %>

<%= f.text_field(:some_field) %>
<p>Many more stuff</p>

<% if not existing_form %>
# If the partial is called without sending a local f, we want to CLOSE the newly created HTML `form` tag
<!-- I need to add an <% end %> here !
<% end %>

最佳答案

您应该传递给 form_special 只是表单构造的参数:

_form_special.html.erb:

<%= form_for(something) do |f| %>
<p>Many form-related stuff</p>
<%- if case condition depending on the passed arguments as `params` %>
<p>If case stuff: for example an additional `render_partial` </p>
<%- end %>
<% end %>

其他观点:

<%= render partial: 'form_special', params: parameters %>

对于您解释的具体情况,只需避免在表单外呈现 _form_part_x.html.erb 的情况,因此它将是:

<%= f.text_field(:some_field) %>
<p>Many more stuff</p>

和调用者 View :

<%= form_for(something) do |f| %>
<%= render partial: form_part_x, f:f %>
<% end %>

关于ruby-on-rails - ERB 有条件地包含 <% end %> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563416/

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