0

我正在构建一个多步骤表单,我想在多个视图中重用按钮代码。这是我想分解成部分布局的代码:

<div class="actions">
<%= link_to "Back", previous_wizard_path, :class => 'btn btn-large' %>
<%= f.submit "Next", class: "btn btn-large btn-primary" %>
</div>

我已将此代码复制到名为“_action_buttons.html.erb”的新部分布局中。

我正在尝试使用以下代码呈现此部分:

<%= render 'multi_form/action_buttons' %>

但是,当我尝试运行它时,由于 f.submit,我收到以下错误:

undefined local variable or method `f' for #<#<Class:0x007fbae16c1dc8>:0x007fbae13b33e8>

提取的源代码(在第 3 行附近):

1: <div class="actions">
2:     <%= link_to "Back", previous_wizard_path, :class => 'btn btn-large' %>
3:     <%= f.submit "Next", class: "btn btn-large btn-primary" %>
4:   </div>

如何修改我的渲染调用,以免发生此错误?我意识到这可能是一个常见问题;帮助一个菜鸟!

4

2 回答 2

2
  1. 您不应该破坏表单标签,因为它可能会导致一些意外行为,并且会破坏代码的可读性。
  2. 如果您真的想遵循这种方法,一种技术是您可以将表单变量传递到您的模板中,您可以尝试执行以下操作:

    <%= render :partial => 'multi_form/action_buttons', :locals => {:f => f} %>
    
于 2012-10-19T00:50:30.970 回答
1

您可以使用不带关键字的更简洁的形式:partial

检查这个问题Rails:对将局部变量传递给局部变量的语法感到困惑

于 2012-10-19T03:55:59.613 回答