2

在我的 Trailblazer 单元中,我正在渲染一个相当动态的表单。我想做这样的事情:

概念/card_form/views/_deck_form.erb*

<%= simple_form_for [parent,card] do |f| %>
   <div class='row'>
     <div class='col-md-6'>
       <%= render '_target_sentence', locals: { f: f } %>
     </div>

概念/card_form/views/_target_sentence.erb

 <%= f.input :target_sentence_text,
        input_html: { class: 'target-sentence', value: card.target_sentence.sentence },
        label: "#{target_language} Sentence" %>

_target_sentence部分还有很多内容,但我在这里对其进行了简化。问题是我无法通过 f 表单生成器

上面的代码给出:

wrong number of arguments (given 2, expected 0..1)

另一种变化:

<%= render '_target_sentence' %>

undefined local variable or method `f' for #<CardForm::Cell:0x007fc8eb7eaa48>

4

1 回答 1

1

我强烈建议在使用 Cells 时避免使用局部变量。

使用 Cells 的主要原因之一是不使用 partials。相反,我建议创建一个名为 TartgetSentence 的单元格,它将接受参数,并创建该“部分”视图,然后调用此单元格而不是render "_target_sentece"您正在执行的操作。

单元格是 ViewObjects,因此您应该将它们视为对象。根据需要定义它们一次,然后从这些视图对象构造“主”单元格和相应的视图,然后在需要时调用它们。这部分是它们比部分更快的原因。

PS:也欢迎您来到我们的 Trailblazer 官方 Gitter 频道 - 您可以更快地获得帮助。 https://gitter.im/trailblazer/chat

于 2017-11-03T18:10:03.180 回答