Rails 5.2 简单形式的Lambda函数

Rails 5.2 Simple Form Lambda Function

如何对 input_html 中的数据属性使用 lambda 函数?

假设我有一个 Author 模型和一个 Book 模型。一个作者可以有多本书,一本书只能有一个作者。

在表单中为 Author 模型。我有以下 -

<%= f.association :books, as: :check_boxes %>

我想要书的 ISBN 的数据属性,就像这样 -

<%= f.association :books, as: :check_boxes, input_html: {data: {isbn: lambda {|book| book.isbn} }} %>

但这不起作用。关于如何实现这一点有什么想法吗?

我不认为那是在 simple_form 的 input_html API 中...但是您总是可以像这样构建集合并将其传递给输入(未经测试):

<% collection = f.object.books.map { |book| [book.id, book.name, data: { isbn: book.isbn }] } %>
<%= f.association :foo, as: :check_boxes, collection: collection %>

您可能需要在 Author#new 中初始化集合,或者您可能希望避免使用 f.association 并在通过 collection 后使用 f.input ] ... 但我希望这能引导您朝着正确的方向前进。让我知道获胜的选项是什么!