我想知道如何有条件地包含“结束”标签
我有很多像这样的“形式部分”
_form_part_x.html.erb (但这不符合我想要做的事情)
<%= form_for(@model) do |f| %>
<%= f.some_tag(...) %>
<% end %>
在许多观点中,我只需要渲染其中一个人。
现在,问题在于我希望为我的模型提供另一个大视图,在这里我渲染所有这些部分(form_part_1,form_part_2;等等)。就我而言,我正在使用引导选项卡,并且每个选项卡都是部分选项,反过来,它会调用多个部分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 (这可以适应我的工作情况如果我知道如何在&lt;%if%&gt;块中添加&lt;%end%&gt;
所以基本上,我认为我可以调整我的部分以有条件地包括<%= 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 %>
答案 0 :(得分:3)
你应该传递给 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 %>
对于您的exaplained特定案例,请避免在表单外部呈现 _form_part_x.html.erb 的情况,因此它将是:
<%= f.text_field(:some_field) %>
<p>Many more stuff</p>
来电者的意见:
<%= form_for(something) do |f| %>
<%= render partial: form_part_x, f:f %>
<% end %>